「Asterisk+voicepeak」の版間の差分
(→voicepeakで生成する) |
(→ファイル名変換を行う) |
||
(同じ利用者による、間の3版が非表示) | |||
19行目: | 19行目: | ||
ファイルを読み込んだら、"名前を付けてプロジェクトを保存"で、例えば core-sounds-ja 等の名前で保存します。<br> | ファイルを読み込んだら、"名前を付けてプロジェクトを保存"で、例えば core-sounds-ja 等の名前で保存します。<br> | ||
音声を細かく調整する場合等はここで行います。<br> | 音声を細かく調整する場合等はここで行います。<br> | ||
− | 音声の調整が完了したら、"出力"で音声を一括出力します。別なフォルダにまとめておくと後が楽です。ファイル名はデフォルトではプロジェクト名が使われるので、特に問題がなければそのままにしておきます。上の例でいうと、ファイル名は "000-core- | + | 音声の調整が完了したら、"出力"で音声を一括出力します。別なフォルダにまとめておくと後が楽です。ファイル名はデフォルトではプロジェクト名が使われるので、特に問題がなければそのままにしておきます。上の例でいうと、ファイル名は "000-core-sounds-ja.wav" のように出力されます。一括変換する際に頭に000から始まる数値が付きます。CSVの行番号を0から始めたのはこれが理由です。<br> |
ファイルの生成が終わったら、できあがった.wavファイル、準備で作ったCSVファイルをAsteriskサーバに転送しておきます。<br> | ファイルの生成が終わったら、できあがった.wavファイル、準備で作ったCSVファイルをAsteriskサーバに転送しておきます。<br> | ||
− | ==ファイル名変換を行う=== | + | |
+ | ==ファイル名変換を行う== | ||
+ | voicepeakで出力したファイルは "000-core-sounds-jp.wav" のようになっているので、これをAsteriskが使うファイル名に変換します。だいたいこんな感じ。 | ||
+ | #!/bin/sh | ||
+ | # | ||
+ | # Convert like: | ||
+ | # sox abs-tcrmessage.wav -r 8000 -c 1 ja/abs-tcrmessage.wav gain -6 | ||
+ | |||
+ | # 音声ファイルの一覧CSV | ||
+ | SRCF="./core-sounds-ja.csv" | ||
+ | # VPで生成した場合の名前(000-core-sounds-ja.wavの形になる) | ||
+ | SRCN="core-sounds-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モノラルに変換し、所定のファイル名に出力しています。<br> | ||
+ | こんな感じでいけると思います。 |
2022年5月13日 (金) 14:35時点における最新版
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-sounds-jp.wav" のようになっているので、これをAsteriskが使うファイル名に変換します。だいたいこんな感じ。
#!/bin/sh # # Convert like: # sox abs-tcrmessage.wav -r 8000 -c 1 ja/abs-tcrmessage.wav gain -6 # 音声ファイルの一覧CSV SRCF="./core-sounds-ja.csv" # VPで生成した場合の名前(000-core-sounds-ja.wavの形になる) SRCN="core-sounds-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モノラルに変換し、所定のファイル名に出力しています。
こんな感じでいけると思います。