Ossian-это коллекция кода Python для построения систем текста в речь (TTS) с акцентом на облегчение исследований в области создания систем TTS с минимальным экспертным надзором. Работа над этим началась с финансирования проекта EU FP7 Simple4all, и этот репозиторий содержит версию, которая является значительной более актуальной, чем ранее доступная. В частности, оригинальная версия инструментария полагалась на HTS для выполнения акустического моделирования. Хотя это все еще возможно использовать HTS, теперь он поддерживает использование нейронных сетей, обученных инструментарием Merlin в качестве продолжительности и акустических моделей. Все комментарии и отзывы о способах его улучшения очень приветствуются.
Вот какой -то китайский документ. 一些中文文档和总结可以发现于 : Китайский Оссиан Док.
Perl 5 требуется.
Python 2.7 требуется.
Используйте установщик пакета pip - по мере необходимости в Python virtualenv - чтобы получить необходимые пакеты:
pip install numpy
pip install scipy
pip install configobj
pip install scikit-learn
pip install regex
pip install lxml
pip install argparse
Мы будем использовать инструментарий Merlin для обучения нейронных сетей, создавая следующие зависимости:
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 должна указывать на этот каталог.
Оссиан полагается на скрытую модель Markov Model Toolkit (HTK) и систему синтеза речи на основе HMM (HTS) для выравнивания и (необязательно) акустического моделирования-вот несколько примечаний по получению и составлению необходимых инструментов. Чтобы получить копию исходного кода HTK, необходимо зарегистрироваться на веб -сайте HTK, чтобы получить имя пользователя и пароль. Здесь предполагается, что они были получены, и переменные среды $HTK_USERNAME и $HTK_PASSWORD указывают им.
Запуск следующего скрипта загрузит и установит необходимые инструменты (включая Merlin):
./scripts/setup_tools.sh $HTK_USERNAME $HTK_PASSWORD
Скрипт ./scripts/setup_tools.sh сделает следующие вещи:
$OSSIAN/tools/merlin и сбрасывают его голову на 8aed278merlin/tools/WORLD/ Polder и создайте его, затем копируйте 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 и corenlp-python будут установлены, если вы изменили бы значение SEQUITUR , STANFORD с 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/recipes/<RECIPE>.cfg (где <RECIPE> является названием конкретного рецепта, который вы используете). Мы начнем с рецепта под названием naive_01_nn . Если вы хотите добавить компоненты в синтезатор, лучшим способом запуска будет взять файл для существующего рецепта, скопируйте его в файл с новым именем и измените его.
Рецепт naive_01_nn - это рецепт, независимый от языка, который наивно использует буквы в качестве единиц акустического моделирования. Это будет работать разумно для языков с разумными орфографиями (EG румын) и менее хорошо для EG English.
Ossian будет размещать все файлы, сгенерированные во время обучения на данных <DATA_NAME> на языке <OSSIAN_LANG> в соответствии с рецептом <RECIPE> в каталоге под названием:
$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
Как сообщают вам различные сообщения, напечатанные во время обучения, обучение самих нейронных сетей, которые будут использоваться для продолжительности и акустического моделирования, не поддерживается напрямую в Ossian. Данные и конфигурации, необходимые для обучения сетей для продолжительности и акустической модели, подготовлены при вышеуказанной командной строке, но инструментарий 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
Для этих данных игрушек обучение на процессоре, как это будет быстро. В качестве альтернативы, чтобы использовать графический процессор для обучения, Do:
./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
Если обучение прошло нормально, то вы можете экспортировать обученную модель в лучший формат для Ossian. Основная проблема заключается в том, что инструменты NN-TTS хранят модель как файл Python Pickle-если это сделано на машине 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
Если обучение прошло нормально, вы можете синтезировать речь. Существует пример румынского предложения в $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 для акустической модели и, например, 100 для модели продолжительности. Вы также захотите экспериментировать с Learning_Rate, Batch_Size и сетевой архитектурой (hidden_layer_size, hidden_layer_type). В настоящее время Ossian поддерживает только сети Feed-Forward.
Команда синтезировать новую волну, заданный текст как вход:
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 < $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Затем, после того, как вы поместите их в правильный каталог, кто -то другой мог бы использовать вашу модель для синтеза с данным текстом.
Здесь мы предоставляем простую предварительно обученную модель для китайских ТТ. Поскольку модель обучается на ограниченном небольшом внутреннем корпусе для тестирования, качество синтезированного голоса не очень хорошо.
Простая предварительно обученная китайская модель: ossian_cn_pretryned_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/
...Мы использовали много других рецептов с Ossian, которые будут задокументированы здесь, когда вычистили достаточно, чтобы быть полезными для других. Они дадут возможность добавлять больше знаний к построенным голосам в виде лексиков, правил букв к звучанию и т. Д., А также интегрировать существующие обученные компоненты, где они доступны для целевого языка. Некоторых из них можно найти здесь:
Этот проект основан на CSTR-Edinburgh/Ossian. Все авторские права принадлежат оригинальному проекту.
Yunchao он