Asterisk+voicepeak

2022年5月13日 (金) 13:22時点におけるTakahashi (トーク | 投稿記録)による版 (voicepeakで生成する)

目次

voicepeak

まずvoicepakを買ってください。

https://www.ah-soft.com/voice/6nare/

ライセンスでは生成した音声『のみ』を配布するのは違反に読み取れますので注意してください。

準備

CSVで次のような感じでファイルを作ります。Asterisk日本語音声(新:TTS版)で配布しているCSVを使ってもかまいません。 Vp001.png
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モノラルに変換し、所定のファイル名に出力しています。