Ossianは、テキストからスピーチ(TTS)システムを構築するためのPythonコードのコレクションであり、最小限の専門家監督でTTSシステムの構築に関する研究を容易にすることに重点を置いています。 EU FP7 Project Simple4allからの資金調達から始まり、このリポジトリには、以前に利用可能なものよりもかなり最新のバージョンが含まれています。特に、ツールキットの元のバージョンは、音響モデリングを実行するためにHTSに依存していました。 HTSを使用することはまだ可能ですが、現在、Merlinツールキットでトレーニングされた期間および音響モデルとしてトレーニングされたニューラルネットの使用をサポートしています。それを改善する方法に関するすべてのコメントとフィードバックは大歓迎です。
これが中国の文書です。 一些中文文档和总结可以发现于:中国のオシアン文書。
Perl 5が必要です。
Python 2.7が必要です。
必要に応じてPython virtualenv内でpipパッケージインストーラーを使用して、必要なパッケージを取得します。
pip install numpy
pip install scipy
pip install configobj
pip install scikit-learn
pip install regex
pip install lxml
pip install argparse
Merlin Toolkitを使用してニューラルネットワークをトレーニングし、次の依存関係を作成します。
pip install bandmat
pip install theano
pip install matplotlib
soxを使用して音声データを処理します。
apt-get install sox
次のようにOssian Githubリポジトリをクローンします。
git clone https://github.com/candlewill/Ossian.git
これにより、 ./Ossian ossianというディレクトリが作成されます。次の議論では、環境変数$OSSIANがこのディレクトリを指すように設定されていると想定しています。
Ossianは、整列と(オプションで)音響モデリングのために、Hidden Markov Model Toolkit(HTK)およびHMMベースの音声合成システム(HTS)に依存しています。必要なツールの取得とコンパイルに関するメモを次に示します。 HTKソースコードのコピーを取得するには、HTK Webサイトに登録して、ユーザー名とパスワードを取得する必要があります。ここで、これらが取得されており、環境変数$HTK_USERNAMEと$HTK_PASSWORDがそれらを指していると想定されています。
次のスクリプトを実行すると、必要なツール(Merlinを含む)をダウンロードしてインストールします。
./scripts/setup_tools.sh $HTK_USERNAME $HTK_PASSWORD
スクリプト./scripts/setup_tools.sh次のことを行います。
$OSSIAN/tools/merlinにクローンし、 8aed278にヘッドをリセットしますmerlin/tools/WORLD/ FolderにCDを作成し、それを構築し、 analysisとsynthを$OSSIAN/tools/bin/にコピーします/: cd $OSSIAN /tools/merlin/tools/WORLD/
make -f makefile
make -f makefile analysis
make -f makefile synth
mkdir -p $OSSIAN /tools/bin/
cp $OSSIAN /tools/merlin/tools/WORLD/build/{analysis,synth} $OSSIAN /tools/bin/$OSSIAN/tools/フォルダーにインストールします。$OSSIAN/tools/$OSSIAN/tools/g2p-r1668-r3およびSTANFORD corenlp-pythonパッケージは、 SEQUITURの値を0から1に変更すると、インストールされます。すべてのツールが$OSSIAN/tools/ディレクトリにインストールされているため、 $OSSIAN/tools/binディレクトリには、Ossianが使用するすべてのバイナリが含まれます。
上記のツールを手動でインストールし、ゼロからインストールしたくない場合は、ソフトリンクを作成して、これらのツールをインストールした場所をOssianに伝えることができます。
# 1 Mannuly clone the merlin repo
# 2 Downlaod WORLD, HTK, HDecode, HTS, HTS-engine, SPTK, build and install.
# 3 Copy all of the binaries into one folder. E.g., bin.
# 3 Where is your merlin dir
export merlin_dir=/home/dl80/heyunchao/Programs/Ossian/tools/merlin
# 4 Where is the bin direcotry inculuding all the binaries
export bin_dir=/home/dl80/heyunchao/Programs/Ossian/tools/bin
# 5 Create soft link in your Ossian/tools direcotry
cd /home/dl80/heyunchao/Programs/MyOssian_Github/tools
ln -s $merlin_dir merlin
ln -s $bin_dir binここで事前に構築されたバイナリコレクションを提供しますossian_required_bin.tar。誰かがスクラッチのために構築したくない場合は、 $bin_dirディレクトリにダウンロードして移動します。
Ossianは、トレーニングデータがディレクトリにあることを期待しています。
./corpus/<OSSIAN_LANG>/speakers/<DATA_NAME>/txt/*.txt
./corpus/<OSSIAN_LANG>/speakers/<DATA_NAME>/wav/*.wav
テキストとウェーブファイルは、互いに一貫して番号を付ける必要があります。 <OSSIAN_LANG>および<DATA_NAME>はどちらも任意の文字列ですが、明らかに理にかなっているものを選択するのは賢明です。
いくつかのガイダンスのために、このおもちゃ(ルーマニア)コーパスをダウンロードして解除してください。
cd $OSSIAN
wget https://www.dropbox.com/s/uaz1ue2dked8fan/romanian_toy_demo_corpus_for_ossian.tar?dl=0
tar xvf romanian_toy_demo_corpus_for_ossian.tar?dl=0
これにより、次のディレクトリ構造が作成されます。
./corpus/rm/speakers/rss_toy_demo/
./corpus/rm/text_corpora/wikipedia_10K_words/
この小さなデータセットにいくつかの声を作成することから始めましょう。結果は悪いように聞こえますが、どんなにひどいものであっても、ツールが機能しているため、自分の選択のより多くのデータを再訓練することができます。以下は、このデータでHTSベースのニューラルネットワークベースの声をトレーニングする方法についての指示です。
ここで準備したさまざまな言語で1時間のデータセットをダウンロードできます:http://tundra.simple4all.org/ssw8data.html
Ossian Trainsは、特定の「レシピ」に従って声を出します - レシピは、テキストからスピーチに変えるために発話に適用される一連のプロセスを指定し、 $OSSIAN/recipes/<RECIPE>.cfg ( <RECIPE>はあなたが使用している特定のレシピの名前)と呼ばれるファイルに記載されています。 naive_01_nnというレシピから始めます。シンセサイザーにコンポーネントを追加する場合は、既存のレシピのファイルを使用して、新しい名前のあるファイルにコピーして変更することです。
レシピnaive_01_nnは、音響モデリングユニットとして文字を素朴に使用する言語独立したレシピです。それは、賢明な正書法(ルーマニア語など)を備えた言語では合理的に機能し、英語Egについてはあまりうまくいきません。
Ossianは<OSSIAN_LANG> <DATA_NAME>レシピ<RECIPE>の<cossian_lang>に配置します。
$OSSIAN/train/<OSSIAN_LANG>/speakers/<DATA_NAME>/<RECIPE>/
声のトレーニングに正常にトレーニングした場合、合成に必要なコンポーネントが次のようにコピーされます。
$OSSIAN/voices/<OSSIAN_LANG>/<DATA_NAME>/<RECIPE>/
ゼロから音声をトレーニングすることから始めたいと仮定すると、これらの場所がデータ/言語/レシピの組み合わせにまだ存在していないことを確認することをお勧めします。
rm -r $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/ $OSSIAN/voices/rm/rss_toy_demo/naive_01_nn/
その後、訓練するには、これを行います。
cd $OSSIAN
python ./scripts/train.py -s rss_toy_demo -l rm naive_01_nn
トレーニング中に印刷されたさまざまなメッセージがあなたに通知するように、期間に使用されるニューラルネットワーク自体のトレーニングと音響モデリングはオシアン内で直接サポートされていません。ネットワークを訓練するために必要なデータと構成は、上記のコマンドラインによって準備されていますが、Merlinツールキットはモデルを実際にトレーニングするために個別に呼び出す必要があります。生成するNNSは、Ossianに適した形式に戻す必要があります。これは少し面倒ですが、オシアンとマーリンの間のより良い統合は進行中の開発分野です。
これを行う方法は次のとおりです。これらの同じ指示は、上記の./scripts/train.pyに電話したときに印刷されています。まず、期間モデルをトレーニングします。
cd $OSSIAN
export THEANO_FLAGS=""; python ./tools/merlin/src/run_merlin.py $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/processors/duration_predictor/config.cfg
このおもちゃのデータでは、このようなCPUに関するトレーニングは迅速になります。または、トレーニングにGPUを使用するには、次のことを行います。
./scripts/util/submit.sh ./tools/merlin/src/run_merlin.py $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/processors/duration_predictor/config.cfg
トレーニングが問題になった場合は、訓練されたモデルをオシアンのより良い形式にエクスポートできます。基本的な問題は、NN-TTSツールがモデルをPythonピクルスファイルとして保存することです。これがGPUマシンで作成されている場合、GPUマシンでのみ使用できます。このスクリプトは、Ossianが理解するより柔軟な形式に変換されます。トレーニングに使用したのと同じ構成ファイルと、新しい形式を配置する場合のディレクトリの名前で呼び出します。
python ./scripts/util/store_merlin_model.py $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/processors/duration_predictor/config.cfg $OSSIAN/voices/rm/rss_toy_demo/naive_01_nn/processors/duration_predictor
期間モデルをトレーニングするとき、警告WARNING: no silence found! - これらは問題ではなく、無視できます。
同様に、音響モデルについては:
cd $OSSIAN
export THEANO_FLAGS=""; python ./tools/merlin/src/run_merlin.py $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/processors/acoustic_predictor/config.cfg
または:
./scripts/util/submit.sh ./tools/merlin/src/run_merlin.py $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/processors/acoustic_predictor/config.cfg
それから:
python ./scripts/util/store_merlin_model.py $OSSIAN/train/rm/speakers/rss_toy_demo/naive_01_nn/processors/acoustic_predictor/config.cfg $OSSIAN/voices/rm/rss_toy_demo/naive_01_nn/processors/acoustic_predictor
トレーニングがOKになった場合、スピーチを統合できます。 $OSSIAN/test/txt/romanian.txtにルーマニア語の判決の例があります - $OSSIAN/test/wav/romanian_toy_naive.wavでそのためのウェーブファイルを合成します。
mkdir $OSSIAN/test/wav/
python ./scripts/speak.py -l rm -s rss_toy_demo -o ./test/wav/romanian_toy_HTS.wav naive_01_nn ./test/txt/romanian.txt
この文のオーディオは、比較のためにここで見つけることができます(トレーニングでは使用されませんでした)。
持続時間と音響モデルトレーニングに使用される構成ファイルは、おもちゃのデータセットではそのまま機能しますが、他のデータセットに移動すると、それらを編集して、より良い許可を得ることができます。特に、Training_Epochsを増やして、より多くのデータで声を訓練する必要があります。これは、音響モデルの場合はEG 30に、期間モデルでEG 100に設定できます。また、Learning_rate、batch_size、およびネットワークアーキテクチャ(hidden_layer_size、hidden_layer_type)を実験する必要があります。現在、Ossianはフィードフォワードネットワークのみをサポートしています。
入力として与えられたテキストを統合するためのコマンドは次のとおりです。
python ./scripts/speak.py -l $OSSIAN_LANG -s $DATA_NAME -o ./test/wav/ ${OSSIAN_LANG} _ ${DATA_NAME} _test.wav $RECIPE ./test/txt/test.txtここで./test/wav/${OSSIAN_LANG}_${DATA_NAME}_test.wav wav/$ {sossian_lang }_$ {data_name }_test.wav and $RECIPE ./test/txt/test.txtは、合成された波と入力テキストです。
speak.pyの完全な使用法は次のとおりです。
usage: speak.py [-h] -s SPEAKER -l LANG [-o OUTPUT] [-t STAGE] [-play] [-lab]
[-bin CUSTOM_BINDIR]
config [files [files ...]]
positional arguments:
config configuration to use: naive, semi-naive, gold, as
defined in < ROOT > /recipes/ < config > -d irectory
files text files to speak, reading from stdin by default
optional arguments:
-h , --help show this help message and exit
-s SPEAKER the name of the speaker: < ROOT > /corpus/ < LANG > / < SPEAKER >
-l LANG the language of the speaker: < ROOT > /corpus/ < LANG >
-o OUTPUT output audio here
-t STAGE defines the current usage stage (definitions of stages
should by found in < config > /recipe.cfg
-play play audio after synthesis
-lab make label file as well as wave in output location
-bin CUSTOM_BINDIR pre-trainedモデルをエクスポートする場合は、次のファイルを梱包する必要があります。
voice/train/cn/speakers/king_cn_corpus/naive_01_nn.cn/questions_dur.hed.conttrain/cn/speakers/king_cn_corpus/naive_01_nn.cn/questions_dur.hedtrain//cn/speakers/king_cn_corpus/naive_01_nn.cn/questions_dnn.hed.cont次に、それらを適切なディレクトリに配置した後、他の誰かがあなたのモデルを使用して、与えられたテキストを合成することができます。
ここでは、中国のTTSのシンプルな事前訓練モデルを提供します。モデルは、テストのために限られた小さな内側のコーパスでトレーニングされているため、合成された音声の品質はあまり良くありません。
シンプルな訓練を受けた中国モデル:ossian_cn_pretrained_model.tar.gz
このモデルから生成されたいくつかのサンプルは、ossian_chinese_samples.zipにあります。
最新のMerlin Repoを使用したい場合は、今可能です。ただし、エクスポートモデルの場合、いくつかのfiles no existエラーは発生しません。対応するファイルを適切なフォルダーに手動でコピーして対処できます。これらのファイルはトレーニング後に存在しますが、適切なディレクトリには存在しません。 find -name *.datを使用して、それらがどこにあるかを見つけることができます。
これが例です:
# Duration model
cp ./train/cn/speakers/toy_cn_corpus/naive_01_nn.cn/dnn_training_ACOUST/inter_module/norm_info__mgc_lf0_vuv_bap_187_MVN.dat /root/Ossian/train/cn/speakers/toy_cn_corpus/naive_01_nn.cn//cmp//norm_info_mgc_lf0_vuv_bap_187_MVN.dat
cp ./train/cn/speakers/toy_cn_corpus/naive_01_nn.cn/dnn_training_ACOUST/inter_module/label_norm_HTS_3491.dat /root/Ossian/train/cn/speakers/toy_cn_corpus/naive_01_nn.cn//cmp//label_norm_HTS_3491.dat
cp ./train/cn/speakers/toy_cn_corpus/naive_01_nn.cn/dnn_training_ACOUST/nnets_model/feed_forward_6_tanh.model /root/Ossian/train/cn/speakers/toy_cn_corpus/naive_01_nn.cn//dnn_training_ACOUST//nnets_model/DNN_TANH_TANH_TANH_TANH_TANH_TANH_LINEAR__mgc_lf0_vuv_bap_0_6_1024_1024_1024_1024_1024_1024_3491.187.train.243.0.002000.rnn.model
# Acoustic model
cp ./train/cn/speakers/toy_cn_corpus/naive_01_nn.cn/dnn_training_DUR/inter_module/norm_info__dur_5_MVN.dat /root/Ossian/train/cn/speakers/toy_cn_corpus/naive_01_nn.cn///norm_info_dur_5_MVN.dat
cp ./train/cn/speakers/toy_cn_corpus/naive_01_nn.cn/dnn_training_DUR/inter_module/label_norm_HTS_3482.dat /root/Ossian/train/cn/speakers/toy_cn_corpus/naive_01_nn.cn/
...他の多くのレシピをオシアンで使用しました。これは、他の人に役立つほど十分にクリーンアップされたときにここで文書化されます。これらは、レキシコン、レターツーサウンドルールなどの形で構築された声にさらに知識を追加し、ターゲット言語で利用可能な既存のトレーニングコンポーネントを統合することができるようになります。それらのいくつかはここにあります:
このプロジェクトは、CSTR-Edinburgh/Ossianに基づいています。すべての著作権は元のプロジェクトに属しています。
Yunchao彼