/MacTTSServer

Primary LanguageJavaScript

Mac TTS Server

これは

Macのsayコマンドを外から叩いて、
吐き出されたデータをoggにして飛ばしてくれるサーバーです。

起動の前に

sayコマンドが吐いたaiffのピッチを変更するのにsoxを使っています。
soxへのパスをconfig.jsへ指定しないと動きません。
globalsoxがあれば、soxPathsoxで良いです。
https://sourceforge.net/projects/sox/
今回は↑のsox-14.4.2を使っています。
また、任意のエンコーディングにするために、ffmpegも使っています。
ffmpegのパスも同じくconfig.jsへ指定して下さい。
https://www.ffmpeg.org/

config.js

module.exports = {
    tmpDir: "./tmp/", // 生成した一時ファイル
    serverPort: 8080, // ポート
    defaultVoice: "otoya", // デフォルトの声
    defaultRate: "200", // デフォルトの速さ
    defaultText: "sample", // デフォルトのテキスト
    defaultPitch: "0", // デフォルトのピッチ
    defaultEncode: "ogg", // 出力のエンコーディング(ffmpegが対応するものであれば)
    encodings: ["ogg", "mp3", "m4a", "aiff"], // 対応するencoding形式。それ以外のものが来たらエラーを吐きます。
    soxPath: "./libs/sox-14.4.2/sox", // soxへのパス
    ffmpegPath: "./libs/ffmpeg", // ffmpegへのパス
    maxProcess: 50, // 最大プロセス数(dosなどを食らった場合のために上限をセットします。)
    minRate: 100, // 最低レート(遅すぎると生成に長時間かかるので)
    maxRate: 800, // 最大レート
    maxTextLength: 200 // 最大の文字の長さ
}

起動

node .で起動。
config.jsで設定を変えられます。

使い方

http://localhost:8080/?voice=otoya&rate=300&pitch=200&text=こんにちは
  • voice : 声の種類です。OtoyaKyokoには対応しています。
  • rate : 声の速さです。
  • pitch : 声の高さです。
  • encoding : 音声ファイルの形式です。
  • text : 読ませる文字です。

今後の予定

  • ピッチ変更。
  • 好きな音声フォーマットで。
  • 様々な声質を連結。
  • tmpファイルは古いものから定期的に削除するように。
  • セキュリティの見直し。(外からの文字を引数にコマンドを叩くので心配)

!!注意!!

https://www.apple.com/legal/sla/
ここにある通りMacのTTSは個人ではいいが、商用はダメとのことです。