Asterisk+voicepeak
目次
voicepeak
まずvoicepakを買ってください。
ライセンスでは生成した音声『のみ』を配布するのは違反に読み取れますので注意してください。
準備
CSVで次のような感じでファイルを作ります。Asterisk日本語音声(新:TTS版)で配布しているCSVを使ってもかまいません。
Excelとかで作る場合、最初のフィールドは連番にします。この時、ROW()-1 のようにゼロから始まるようにしてください。
2番目のフィールドはAsteriskの音声ファイル名です。このファイル名は英語版等のものと同じにします。
3番目のフィールドがTTSで変換する日本語です。
Excelで作った場合には、UTF-8でCSVを出力しておきます。
また第3カラムだけ全部コピーし、テキストファイルとして保存しておきます。
有効 追加 エージェントはすでに...
のように1行1文のテキストファイルとします。
voicepeakで生成する
voicepeakを起動し、ファイル->インポート->"テキストファイルを開く"で、先ほど用意したテキストファイルを読み込みます。
ファイルを読み込んだら、"名前を付けてプロジェクトを保存"で、例えば core-sounds-ja 等の名前で保存します。
音声を細かく調整する場合等はここで行います。
音声の調整が完了したら、"出力"で音声を一括出力します。別なフォルダにまとめておくと後が楽です。ファイル名はデフォルトではプロジェクト名が使われるので、特に問題がなければそのままにしておきます。上の例でいうと、ファイル名は "000-core-sounds-ja.wav" のように出力されます。一括変換する際に頭に000から始まる数値が付きます。CSVの行番号を0から始めたのはこれが理由です。
ファイルの生成が終わったら、できあがった.wavファイル、準備で作ったCSVファイルをAsteriskサーバに転送しておきます。
ファイル名変換を行う
voicepeakで主力したファイルは "000-core-sound-jp.wav" のようになっているので、これをAsteriskが使うファイル名に変換します。だいたいこんな感じ。
#!/bin/sh # # Convert like: # sox abs-tcrmessage.wav -r 8000 -c 1 ja/abs-tcrmessage.wav gain -6 # 音声ファイルの一覧CSV SRCF="./core-sound-ja.csv" # VPで生成した場合の名前(000-core-sound-ja.wavの形になる) SRCN="core-sound-ja" # 変換後の音声ファイルの置き場所 DIRS="ja ja/digits ja/letters ja/phonetic" # 出力先のサブ・ディレクトリ作成 for i in $DIRS do mkdir -p $i done # リスト生成 LIST=`cat $SRCF | cut -f1-2 -d','` # 各エントリの取り出し for ENT in $LIST do NUM=`echo $ENT | cut -f1,1 -d','` LEN=${#NUM} if [ $LEN -eq 1 ]; then NUM=00$NUM elif [ $LEN -eq 2 ]; then NUM=0$NUM fi FILE=`echo $ENT | cut -f2,2 -d','` FILE=$FILE.wav SRCV="$NUM-$SRCN.wav" echo $SRCV "->" $FILE sox $SRCV -r 8000 -c 1 $FILE gain -6 done
ファイル名を変換するわけではなく、元のオーディオからAsteriskのオーディオファイルを生成し、このスクリプトが実行されたディレクトリの下、ja/に入れています。soxでオーディオを8KHzモノラルに変換し、所定のファイル名に出力しています。