Macのsay
コマンドを外から叩いて、
吐き出されたデータをoggにして飛ばしてくれるサーバーです。
sayコマンドが吐いたaiff
のピッチを変更するのにsox
を使っています。
sox
へのパスをconfig.js
へ指定しないと動きません。
global
にsox
があれば、soxPath
はsox
で良いです。
https://sourceforge.net/projects/sox/
今回は↑のsox-14.4.2
を使っています。
また、任意のエンコーディングにするために、ffmpeg
も使っています。
ffmpeg
のパスも同じくconfig.js
へ指定して下さい。
https://www.ffmpeg.org/
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 : 声の種類です。
Otoya
とKyoko
には対応しています。 - rate : 声の速さです。
- pitch : 声の高さです。
- encoding : 音声ファイルの形式です。
- text : 読ませる文字です。
ピッチ変更。好きな音声フォーマットで。- 様々な声質を連結。
- tmpファイルは古いものから定期的に削除するように。
セキュリティの見直し。(外からの文字を引数にコマンドを叩くので心配)
https://www.apple.com/legal/sla/
ここにある通りMacのTTSは個人ではいいが、商用はダメとのことです。