Python 스크립트는 Voxforge.org Speech Data 및 많은 소스에서 오디오 및 언어 모델을 계산합니다. 구축 할 수있는 모델에는 다음이 포함됩니다.
중요 :이 스크립트는 최종 사용자 소비를위한 완전한 응용 프로그램을 결코 형성하지 않습니다. 그러나 자연어 처리에 관심이있는 개발자라면 일부가 유용 할 수 있습니다. 기부금, 패치 및 풀 요청은 매우 환영합니다.
이 글을 쓰는 시점에서 여기의 스크립트는 영어 및 독일 Voxforge 모델을 구축하는 데 중점을 둡니다. 그러나 다른 언어 모델을 구축하는 데 사용될 수없는 이유는 없습니다.
GH-MD-TOC에 의해 만들어졌습니다
다운로드 할 수있는 이러한 모델을 구축하는 데 사용되는 도구의 다양한 모델과 소스 코드 및 바이너리가 있습니다. 모든 것이 무료이며 오픈 소스입니다.
모든 모델 및 데이터 다운로드는 여기에서 찾을 수 있습니다 : 다운로드
사전 구축 된 ASR 모델은 여기에서 다운로드 할 수 있습니다 : ASR 모델
kaldi-generic-en-tdnn_f 대형 NNET3- 체인 인수 TDNN 모델, ~ 1200 시간의 오디오 훈련. 괜찮은 배경 소음 저항이 있으며 전화 기록에도 사용할 수 있습니다. 최상의 정확성을 제공해야하지만 다른 모델보다 리소스 집약적입니다.kaldi-generic-en-tdnn_sp 대형 NNET3 체인 모델, ~ 1200 시간의 오디오 훈련. 괜찮은 배경 소음 저항이 있으며 전화 기록에도 사용할 수 있습니다. tddn_f 모델보다 덜 정확하지만 리소스 집약력이 약간 덜 집중적입니다.kaldi-generic-en-tdnn_250 대형 모델과 동일하지만 리소스 집약적이 적은 자원 집약적이며 임베디드 애플리케이션에 사용하기에 적합합니다 (예 : Raspberrypi 3).kaldi-generic-en-tri2b_chain GMM 모델은 자동 분할 작업을위한 위의 두 모델과 동일한 데이터에 대해 교육을 받았습니다.kaldi-generic-de-tdnn_f 대형 NNET3 체인 모델, ~ 400 시간의 오디오 훈련. 괜찮은 배경 소음 저항이 있으며 전화 기록에도 사용할 수 있습니다.kaldi-generic-de-tdnn_250 대형 모델과 동일하지만 리소스 집약적이지 않은 경우 임베디드 애플리케이션에 사용하기에 적합합니다 (예 : Raspberrypi 3).kaldi-generic-de-tri2b_chain GMM 모델은 자동 세분화 작업을위한 위의 두 모델과 동일한 데이터에 대해 교육을 받았습니다.w2l-generic-de 대형 모델. 괜찮은 배경 소음 저항이 있으며 전화 기록에도 사용할 수 있습니다.참고 : 이러한 모델이 응용 프로그램 도메인에 적응할 수 있고 적응해야한다는 것을 인식하는 것이 중요합니다. 자세한 내용은 모델 적응을 참조하십시오.
우리의 사전은 여기에서 다운로드 할 수 있습니다 : 사전
dict-en.ipa 시퀀스 G2P를 통해 생성 된 많은 추가 항목이있는 CMUDICT를 기반으로합니다.dict-de.ipa Wiktionary에서 추출한 많은 추가 자동 평가 항목으로 처음부터 수동으로 생성되었습니다. 사전 구축 된 G2P 모델은 여기에서 다운로드 할 수 있습니다 : G2P 모델
sequitur-dict-en.ipa sequitur g2p 모델은 영어 IPA 사전 (UTF8)에 대한 교육을 받았습니다.sequitur-dict-de.ipa sequitur g2p 모델은 독일 IPA 사전 (UTF8)에 대한 교육을 받았습니다. 사전 구축 된 ARPA 언어 모델은 여기에서 다운로드 할 수 있습니다 : 언어 모델
generic_en_lang_model_smallgeneric_en_lang_model_largegeneric_de_lang_model_smallgeneric_de_lang_model_large 샘플 파일 몇 개를 다운로드하십시오
$ wget http://goofy.zamia.org/zamia-speech/misc/demo_wavs.tgz
--2018-06-23 16:46:28-- http://goofy.zamia.org/zamia-speech/misc/demo_wavs.tgz
Resolving goofy.zamia.org (goofy.zamia.org)... 78.47.65.20
Connecting to goofy.zamia.org (goofy.zamia.org) | 78.47.65.20 | :80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 619852 (605K) [application/x-gzip]
Saving to: ‘demo_wavs.tgz’
demo_wavs.tgz 100%[ ==========================================================> ] 605.32K 2.01MB/s in 0.3s
2018-06-23 16:46:28 (2.01 MB/s) - ‘demo_wavs.tgz’ saved [619852/619852]포장을 풀기 :
$ tar xfvz demo_wavs.tgz
demo1.wav
demo2.wav
demo3.wav
demo4.wav데모 프로그램을 다운로드하십시오
$ wget http://goofy.zamia.org/zamia-speech/misc/kaldi_decode_wav.py
--2018-06-23 16:47:53-- http://goofy.zamia.org/zamia-speech/misc/kaldi_decode_wav.py
Resolving goofy.zamia.org (goofy.zamia.org)... 78.47.65.20
Connecting to goofy.zamia.org (goofy.zamia.org) | 78.47.65.20 | :80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2469 (2.4K) [text/plain]
Saving to: ‘kaldi_decode_wav.py’
kaldi_decode_wav.py 100%[ ==========================================================> ] 2.41K --.-KB/s in 0s
2018-06-23 16:47:53 (311 MB/s) - ‘kaldi_decode_wav.py’ saved [2469/2469]이제 Demo Wav 파일에서 Kaldi 자동 음성 인식을 실행하십시오.
$ python kaldi_decode_wav.py -v demo ? .wav
DEBUG:root:/opt/kaldi/model/kaldi-generic-en-tdnn_sp loading model...
DEBUG:root:/opt/kaldi/model/kaldi-generic-en-tdnn_sp loading model... done, took 1.473226s.
DEBUG:root:/opt/kaldi/model/kaldi-generic-en-tdnn_sp creating decoder...
DEBUG:root:/opt/kaldi/model/kaldi-generic-en-tdnn_sp creating decoder... done, took 0.143928s.
DEBUG:root:demo1.wav decoding took 0.37s, likelyhood: 1.863645
i cannot follow you she said
DEBUG:root:demo2.wav decoding took 0.54s, likelyhood: 1.572326
i should like to engage just for one whole life in that
DEBUG:root:demo3.wav decoding took 0.42s, likelyhood: 1.709773
philip knew that she was not an indian
DEBUG:root:demo4.wav decoding took 1.06s, likelyhood: 1.715135
he also contented that better confidence was established by carrying no weapons Pulseaudio 마이크 소스의 이름을 결정하십시오.
$ pactl list sources
Source # 0
State: SUSPENDED
Name: alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-mono
Description: CM108 Audio Controller Analog Mono
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^데모 다운로드 및 실행 :
$ wget ' http://goofy.zamia.org/zamia-speech/misc/kaldi_decode_live.py '
$ python kaldi_decode_live.py -s ' CM108 '
Kaldi live demo V0.2
Loading model from /opt/kaldi/model/kaldi-generic-en-tdnn_250 ...
Please speak.
hallo computer
switch on the radio please
please switch on the light
what about the weather in stuttgart
how are you
thank you
good bye 로컬 컴퓨터에서 STT 서비스를 시작하려면 다음을 수행하십시오.
$ docker pull quay.io/mpuels/docker-py-kaldi-asr-and-model:kaldi-generic-en-tdnn_sp-r20180611
$ docker run --rm -p 127.0.0.1:8080:80/tcp quay.io/mpuels/docker-py-kaldi-asr-and-model:kaldi-generic-en-tdnn_sp-r20180611전사를 위해 오디오 파일을 서비스로 전송하려면 두 번째 터미널에서 실행합니다.
$ git clone https://github.com/mpuels/docker-py-kaldi-asr-and-model.git
$ conda env create -f environment.yml
$ source activate py-kaldi-asr-client
$ ./asr_client.py asr.wav
INFO:root: 0.005s: 4000 frames ( 0.250s) decoded, status=200.
...
INFO:root:19.146s: 152000 frames ( 9.500s) decoded, status=200.
INFO:root:27.136s: 153003 frames ( 9.563s) decoded, status=200.
INFO:root: *****************************************************************
INFO:root: ** wavfn : asr.wav
INFO:root: ** hstr : speech recognition system requires training where individuals to exercise political system
INFO:root: ** confidence : -0.578844
INFO:root: ** decoding time : 27.14s
INFO:root: *****************************************************************위의 예제의 도커 이미지는 서로 위에 4 개의 이미지를 쌓은 결과입니다.
Docker-Py-Kaldi-Asr-and-Model : 소스, 이미지
Docker-Py-Kaldi-Asr : 소스, 이미지
Docker-Kaldi-ASR : 소스, 이미지
데비안 : 8 : https://hub.docker.com/_/debian/
참고 : 아마도 불완전합니다.
Debian의 종속성 설치 예 :
apt-get install build-essential pkg-config python-pip python-dev python-setuptools python-wheel ffmpeg sox libatlas-base-dev
# Create a symbolic link because one of the pip packages expect atlas in this location:
ln -s /usr/include/x86_64-linux-gnu/atlas /usr/include/atlas
pip install numpy nltk cython
pip install py-kaldi-asr py-nltools
이 스크립트를 실행하는 데 필요한 환경에 대한 거친 메모 만 있습니다. 이것은 결코 완전한 지침 세트가 아니며, 당신을 시작하기위한 힌트입니다.
~/.speechrc [speech]
vf_login = <your voxforge login>
speech_arc = /home/bofh/projects/ai/data/speech/arc
speech_corpora = /home/bofh/projects/ai/data/speech/corpora
kaldi_root = /apps/kaldi-cuda
; facebook's wav2letter++
w2l_env_activate = /home/bofh/projects/ai/w2l/bin/activate
w2l_train = /home/bofh/projects/ai/w2l/src/wav2letter/build/Train
w2l_decoder = /home/bofh/projects/ai/w2l/src/wav2letter/build/Decoder
wav16 = /home/bofh/projects/ai/data/speech/16kHz
noise_dir = /home/bofh/projects/ai/data/speech/corpora/noise
europarl_de = /home/bofh/projects/ai/data/corpora/de/europarl-v7.de-en.de
parole_de = /home/bofh/projects/ai/data/corpora/de/German Parole Corpus/DE_Parole/
europarl_en = /home/bofh/projects/ai/data/corpora/en/europarl-v7.de-en.en
cornell_movie_dialogs = /home/bofh/projects/ai/data/corpora/en/cornell_movie_dialogs_corpus
web_questions = /home/bofh/projects/ai/data/corpora/en/WebQuestions
yahoo_answers = /home/bofh/projects/ai/data/corpora/en/YahooAnswers
europarl_fr = /home/bofh/projects/ai/data/corpora/fr/europarl-v7.fr-en.fr
est_republicain = /home/bofh/projects/ai/data/corpora/fr/est_republicain.txt
wiktionary_de = /home/bofh/projects/ai/data/corpora/de/dewiktionary-20180320-pages-meta-current.xml
[tts]
host = localhost
port = 8300 일부 스크립트는 모든 스크립트가 살고있는 동일한 디렉토리에 위치한 AL 로컬 tmp 디렉토리가 존재할 것으로 예상합니다.
mkdir tmp다음 목록에는이 스크립트 컬렉션에서 지원하는 Speech Corpora가 포함되어 있습니다.
Forschergeist (독일어, 2 시간) :
<~/.speechrc:speech_arc>/forschergeist<~/.speechrc:speech_corpora>/forschergeist독일어 SpeechData 패키지 버전 2 (독일어, 148 시간) :
dev , test 및 train <~/.speechrc:speech_arc>/gspv2 의 직접 하위 디렉토리가되도록 아카이브를 풀어주십시오../import_gspv2.py 를 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/gspv2 에 기록됩니다.소음:
<~/.speechrc:speech_corpora>/ (그곳에서 noise 서브 디렉토리가 생성됩니다)Librispeech ASR (영어, 475 시간) :
LibriSpeech <~/.speechrc:speech_arc> 의 직접 서브 디렉토리가되도록 아카이브를 풀어주십시오../import_librispeech.py 를 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/librispeech 에 기록됩니다.LJ 음성 데이터 세트 (영어, 24 시간) :
LJSpeech-1.1 <~/.speechrc:speech_arc> 의 직접 서브 디렉토리가되도록 아카이브를 풀어주십시오.import_ljspeech.py 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/lindajohnson-11 에 기록됩니다.Mozilla Common Voice 독일어 (독일어, 140 시간) :
de.tar.gz 를 다운로드하십시오cv_de <~/.speechrc:speech_arc> 의 직접 서브 디렉토리가되도록 아카이브를 풀어주십시오../import_mozde.py 를 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/cv_de 에 기록됩니다.Mozilla Common Voice V1 (영어, 252 시간) :
cv_corpus_v1.tar.gz 다운로드하십시오cv_corpus_v1 이 <~/.speechrc:speech_arc> 의 직접 서브 디렉토리가되도록 아카이브를 풀어주십시오../import_mozcv1.py 를 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/cv_corpus_v1 에 기록됩니다.뮌헨 인공 지능 실험실 GMBH (M-Aailabs) 음성 데이터 세트 (영어, 147 시간, 독일어, 237 시간, 프랑스어, 190 시간) :
de_DE.tgz , en_UK.tgz , en_US.tgz , fr_FR.tgz (미러) 다운로드<~/.speechrc:speech_arc> 에서 하위 디렉토리 m_ailabs 만듭니다m_ailabs 하위 디렉토리 내부에서 다운로드 된 Tarbals를 풀어주십시오by_book 를 이동하고 male 및 female 디렉토리를 이동하십시오../import_mailabs.py 를 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/m_ailabs_en , <~/.speechrc:speech_corpora>/m_ailabs_de 및 <~/.speechrc:speech_corpora>/m_ailabs_fr 로 작성됩니다.Ted-Lium 릴리스 3 (영어, 210 시간) :
TEDLIUM_release-3.tgz 다운로드하십시오TEDLIUM_release-3 <~/.speechrc:speech_arc> 의 직접 서브 디렉토리가되도록 아카이브를 풀어주십시오../import_tedlium3.py 를 실행하여 코퍼스를 Voxforge 형식으로 변환하십시오. 결과 코퍼스는 <~/.speechrc:speech_corpora>/tedlium3 에 기록됩니다.Voxforge (영어, 75 시간) :
<~/.speechrc:speech_arc>/voxforge_en<~/.speechrc:speech_corpora>/voxforge_enVoxforge (독일어, 56 시간) :
<~/.speechrc:speech_arc>/voxforge_de<~/.speechrc:speech_corpora>/voxforge_deVoxforge (프랑스어, 140 시간) :
<~/.speechrc:speech_arc>/voxforge_fr<~/.speechrc:speech_corpora>/voxforge_frZamia (영어, 5 분) :
<~/.speechrc:speech_arc>/zamia_en<~/.speechrc:speech_corpora>/zamia_enZamia (독일어, 18 시간) :
<~/.speechrc:speech_arc>/zamia_de 로 다운로드하십시오<~/.speechrc:speech_corpora>/zamia_de 기술 노트 : 대부분의 Corpora의 경우 data/src/speech/<corpus_name>/transcripts_*.csv . CSV에서 찾을 수있는 데이터베이스에서 성적표를 수정했습니다. 이것들은 여러 시간의 (반) 수동 검토에 의해 만들어 졌기 때문에 원래 프롬프트보다 품질이 높아야하므로 ASR 모델을 훈련하는 동안 사용될 것입니다.
다운로드하고 필요한 경우 코퍼스를 변환 한 후에는 실행해야합니다.
./speech_audio_scan.py < corpus name >그것에. 이렇게하면 CSV 데이터베이스에 누락 된 프롬프트가 추가되고 오디오 파일을 16kHz 모노 웨이브 형식으로 변환합니다.
노이즈 저항을 개선하기 위해 소음이 추가 된 기존 기존 제품에서 Corpora를 도출 할 수 있습니다.
./speech_gen_noisy.py zamia_de
./speech_audio_scan.py zamia_de_noisy
cp data/src/speech/zamia_de/spk2gender data/src/speech/zamia_de_noisy/
cp data/src/speech/zamia_de/spk_test.txt data/src/speech/zamia_de_noisy/
./auto_review.py -a zamia_de_noisy
./apply_review.py -l de zamia_de_noisy review-result.csv 이 스크립트는 일반적인 전화 코덱을 통해 녹음을 실행합니다. 이러한 코퍼스는 8kHz 전화 기록을 지원하는 모델을 훈련시키는 데 사용될 수 있습니다.
./speech_gen_phone.py zamia_de
./speech_audio_scan.py zamia_de_phone
cp data/src/speech/zamia_de/spk2gender data/src/speech/zamia_de_phone/
cp data/src/speech/zamia_de/spk_test.txt data/src/speech/zamia_de_phone/
./auto_review.py -a zamia_de_phone
./apply_review.py -l de zamia_de_phone review-result.csv 다음 목록에는이 저장소에 포함 된 스크립트로 언어 모델을 훈련시키는 데 사용할 수있는 Text Corpora가 포함되어 있습니다.
Europarl, 특히 평행 한 코퍼스 독일어-영어 및 평행 한 코퍼스 프랑스어 영어 :
.speechrc : europarl_de , europarl_en , europarl_fr 의 해당 변수./speech_sentences.py europarl_de , ./speech_sentences.py europarl_en 및 ./speech_sentences.py europarl_fr코넬 영화-다이알 로그 코퍼스 :
.speechrc : cornell_movie_dialogs 의 해당 변수./speech_sentences.py cornell_movie_dialogs독일 가석방 코퍼스 :
.speechrc : parole_de 의 해당 변수./speech_train_punkt_tokenizer.py 를 사용하여 Train Punkt Tokenizer, 그런 다음 run ./speech_sentences.py parole_de WebQuestions : web_questions
.speechrc : web_questions 의 해당 변수./speech_sentences.py web_questions 야후! 답변 데이터 세트 : yahoo_answers
.speechrc : yahoo_answers 의 해당 변수./speech_sentences.py yahoo_answers Cnrtl est Républicain Corpus, CC By-NC-SA 라이센스로 제공되는 큰 뉴스 기사 (4.3m 헤드 라인/단락). XML 파일을 다운로드하고 헤드 라인 및 단락을 다음 명령으로 텍스트 파일로 xmllint --xpath '//*[local-name()="div"][@type="article"]//*[local-name()="p" or local-name()="head"]/text()' Annee*/*.xml | perl -pe 's/^ +//g ; s/^ (.+)/$1n/g ; chomp' > est_republicain.txt
.speechrc : est_republicain 의 해당 변수./speech_sentences.py est_republicain문장은 우리의 연설 Corpora에서 추출 할 수 있습니다. 그렇게하려면 달리기 :
영어 연설 Corpora
./speech_sentences.py voxforge_en./speech_sentences.py librispeech./speech_sentences.py zamia_en./speech_sentences.py cv_corpus_v1./speech_sentences.py ljspeech./speech_sentences.py m_ailabs_en./speech_sentences.py tedlium3독일어 스피치 코퍼라
./speech_sentences.py forschergeist./speech_sentences.py gspv2./speech_sentences.py voxforge_de./speech_sentences.py zamia_de./speech_sentences.py m_ailabs_de./speech_sentences.py cv_de전제 조건 :
europarl_en , cornell_movie_dialogs , web_questions 및 yahoo_answers 가 설치되어 문장이 추출되었습니다 (위의 지침 참조).librispeech , voxforge_en , zamia_en , cv_corpus_v1 , ljspeech , m_ailabs_en , tedlium3 에서 추출됩니다.Kenlm을 사용하여 Kendi 및 Wav2letter 빌드에서 사용하기 위해 Kenlm을 사용하여 주문 4의 작은 가지 치기 영어 모델을 훈련시키기 위해 다음을 실행합니다.
./speech_build_lm.py generic_en_lang_model_small europarl_en cornell_movie_dialogs web_questions yahoo_answers librispeech voxforge_en zamia_en cv_corpus_v1 ljspeech m_ailabs_en tedlium3가지 치기가 적은 주문 6의 더 큰 모델을 훈련시키기 위해 :
./speech_build_lm.py -o 6 -p " 0 0 0 0 1 " generic_en_lang_model_large europarl_en cornell_movie_dialogs web_questions yahoo_answers librispeech voxforge_en zamia_en cv_corpus_v1 ljspeech m_ailabs_en tedlium3순서 5의 중간 크기 모델을 훈련시키기 위해 :
./speech_build_lm.py -o 5 -p " 0 0 1 2 " generic_en_lang_model_medium europarl_en cornell_movie_dialogs web_questions yahoo_answers librispeech voxforge_en zamia_en cv_corpus_v1 ljspeech m_ailabs_en tedlium3전제 조건 :
europarl_de 및 parole_de 설치되고 문장이 추출됩니다 (위의 지침 참조).forschergeist , gspv2 , voxforge_de , zamia_de , m_ailabs_de , cv_de 에서 추출됩니다.Kenlm과 Wav2letter 빌드에서 사용하기 위해 Kenlm을 사용하여 주문 4의 작은 가지 치기 독일어 모델을 훈련시키기 위해 : 실행 :
./speech_build_lm.py generic_de_lang_model_small europarl_de parole_de forschergeist gspv2 voxforge_de zamia_de m_ailabs_de cv_de가지 치기가 적은 주문 6의 더 큰 모델을 훈련시키기 위해 :
./speech_build_lm.py -o 6 -p " 0 0 0 0 1 " generic_de_lang_model_large europarl_de parole_de forschergeist gspv2 voxforge_de zamia_de m_ailabs_de cv_de순서 5의 중간 크기 모델을 훈련시키기 위해 :
./speech_build_lm.py -o 5 -p " 0 0 1 2 " generic_de_lang_model_medium europarl_de parole_de forschergeist gspv2 voxforge_de zamia_de m_ailabs_de cv_de전제 조건 :
europarl_fr 및 est_republicain 이 설치되고 문장이 추출됩니다 (위의 지침 참조).voxforge_fr 및 m_ailabs_fr 에서 추출됩니다Kenlm Run을 사용하여 프랑스어 모델을 훈련시키기 위해 :
./speech_build_lm.py generic_fr_lang_model europarl_fr est_republicain voxforge_fr m_ailabs_fr제출 검토, 전사 및 어휘 확장에 사용되는 주요 도구는 다음과 같습니다.
./speech_editor.py참고 : 우리는이 문서와 스크립트에서 Lexicon 및 Dictionary라는 용어를 사용합니다.
현재 우리는 영어 용으로, 하나는 독일어 ( data/src/dicts )의 두 개의 Lexica를 가지고 있습니다.
Dict-en.ipa
dict-de.ipa
우리의 Lexica의 기본 형식은 (UTF8) IPA에 있으며 세미콜론이 분리기로서 있습니다. 그런 다음이 형식은 해당 내보내기 스크립트에 의해 대상 ASR 엔진에서 사용하는 형식으로 변환됩니다.
많은 Lexicon 관련 도구는 사전에서 누락 된 단어에 대한 발음을 계산하기 위해 Sequitur G2P에 의존합니다. 필요한 모델은 파일 서버 (http://goofy.zamia.org/zamia-speech/g2p/)에서 다운로드 할 수 있습니다. 설치하려면 다운로드하여 포장을 풀고 다음과 같은 data/models 에서 링크를 넣습니다.
data/models/sequitur-dict-de.ipa-latest - > < your model dir > /sequitur-dict-de.ipa-r20180510
data/models/sequitur-dict-en.ipa-latest - > < your model dir > /sequitur-dict-en.ipa-r20180510자신의 격리 G2P 모델을 훈련 시키려면 제공된 수출 및 기차 스크립트를 사용하십시오.
[guenter@dagobert speech]$ ./speech_sequitur_export.py -d dict-de.ipa
INFO:root:loading lexicon...
INFO:root:loading lexicon...done.
INFO:root:sequitur workdir data/dst/dict-models/dict-de.ipa/sequitur done.
[guenter@dagobert speech]$ ./speech_sequitur_train.sh dict-de.ipa
training sample: 322760 + 16988 devel
iteration: 0
..../speech_lex_edit.py word [word2 ...]주요 저주 기반의 대화식 Lexicon 편집기입니다. Sequitur G2P, Marytts 및 Espeakng를 사용하여 새로운 단어에 대한 후보 항목을 자동으로 생성합니다. 그런 다음 사용자는 필요한 경우 이러한 항목을 수동으로 수동으로 편집하고 Marytts를 통해 다른 목소리로 합성되는 것을 듣고 확인할 수 있습니다.
Lexicon 편집기는 특히 하나의 도구 내에서 새 오디오 샘플에 대한 누락 된 단어를 전사, 검토 및 추가 할 수 있으므로 특히 다른 다양한 도구 인 speech_editor.py 에 통합되어 있습니다.
또한 때때로 어휘집 항목을 무작위로 검토하는 경향이 있습니다. 이를 위해 나는 Lexicon의 현재 전사와 동의하지 않는 20 개의 임의의 항목을 선택하는 작은 스크립트가 있습니다.
./speech_lex_edit.py ` ./speech_lex_review.py `또한 때때로이 명령을 사용하여 배치 모드에서 성적표에서 누락 된 단어를 추가합니다.
./speech_lex_edit.py ` ./speech_lex_missing.py ` 독일 어휘집의 경우, 일련의 스크립트를 사용하여 독일 Wiktionary에서 항목을 추출 할 수 있습니다. 이를 위해 첫 번째 단계는 Wiktionary XML 덤프에서 후보 항목 세트를 추출하는 것입니다.
./wiktionary_extract_ipa.py 이것은 data/dst/speech/de/dict_wiktionary_de.txt 에 대한 추출 된 항목을 출력합니다. 이제 이러한 항목을 우리 자신의 IPA 스타일과 음소 세트로 변환하는 세력 G2P 모델을 훈련시켜야합니다.
./wiktionary_sequitur_export.py
./wiktionary_sequitur_train.sh마지막으로, 우리는 항목을 번역하고 일반적인 시설 G2P 모델의 예측에 대해 확인합니다.
./wiktionary_sequitur_gen.py 이 스크립트는 data/dst/speech/de/dict_wiktionary_gen.txt 에 허용 가능한 항목이 포함되어 있습니다. data/dst/speech/de/dict_wiktionary_rej.txt 거부 된 항목이 포함되어 있습니다.
다음 레시피는 Kaldi 모델을 영어로 훈련시킵니다.
실행하기 전에 모든 전제 조건이 충족되도록하십시오 (이에 대한 지침은 위 참조) :
generic_en_lang_model_small 빌드voxforge_en , librispeech , cv_corpus_v1 , ljspeech , m_ailabs_en , tedlium3 및 zamia_en 의 일부 또는 모든 Speech Corpora가 설치, 변환 및 스캔됩니다.voxforge_en_noisy , voxforge_en_phone , librispeech_en_noisy , librispeech_en_phone , cv_corpus_v1_noisy , cv_corpus_v1_phone , zamia_en_noisy 및 zamia_en_phone ./speech_kaldi_export.py generic-en-small dict-en.ipa generic_en_lang_model_small voxforge_en librispeech zamia_en
cd data/dst/asr-models/kaldi/generic-en-small
./run-chain.sh소음 증강 Corpora와 함께 수출 실행 :
./speech_kaldi_export.py generic-en dict-en.ipa generic_en_lang_model_small voxforge_en cv_corpus_v1 librispeech ljspeech m_ailabs_en tedlium3 zamia_en voxforge_en_noisy librispeech_noisy cv_corpus_v1_noisy cv_corpus_v1_phone zamia_en_noisy voxforge_en_phone librispeech_phone zamia_en_phone다음 레시피는 독일어를위한 칼디 모델을 훈련시킵니다.
실행하기 전에 모든 전제 조건이 충족되도록하십시오 (이에 대한 지침은 위 참조) :
generic_de_lang_model_small 빌드voxforge_de , gspv2 , forschergeist , zamia_de , m_ailabs_de , cv_de 의 일부 또는 모든 Speech Corpora가 설치, 변환 및 스캔됩니다.voxforge_de_noisy , voxforge_de_phone , zamia_de_noisy 및 zamia_de_phone ./speech_kaldi_export.py generic-de-small dict-de.ipa generic_de_lang_model_small voxforge_de gspv2 [ forschergeist zamia_de ...]
cd data/dst/asr-models/kaldi/generic-de-small
./run-chain.sh소음 증강 Corpora와 함께 수출 실행 :
./speech_kaldi_export.py generic-de dict-de.ipa generic_de_lang_model_small voxforge_de gspv2 forschergeist zamia_de voxforge_de_noisy voxforge_de_phone zamia_de_noisy zamia_de_phone m_ailabs_de cv_de완전한 Zamia-Speech 설정이 필요하지 않은 독립형 Kaldi 모델 적응 도구의 경우 참조하십시오.
칼디 아트-LM
기존 Kaldi 모델 (예 : 다운로드를 제공하는 것과 같은 스크립트를 사용하여 처음부터 훈련 할 수있는 모델과 같은 모델)은 (일반적으로 도메인 별) 언어 모델, JSGF 문법 및 문법 FST에 적응할 수 있습니다.
다음은 영어 모델을 간단한 명령에 적응하고 JSGF 문법을 제어하는 방법입니다. 이것은 단지 장난감 예일뿐입니다. 실제 세계 사용을 위해서는 문법에 쓰레기 음소 루프를 추가하거나 즉시 소음 저항이 내장 된 언어 모델을 생성하고 싶을 것입니다.
다음은 우리가 사용할 문법입니다.
#JSGF V1.0;
grammar org.zamia.control;
public <control> = <wake> | <politeCommand> ;
<wake> = ( good morning | hello | ok | activate ) computer;
<politeCommand> = [ please | kindly | could you ] <command> [ please | thanks | thank you ];
<command> = <onOffCommand> | <muteCommand> | <volumeCommand> | <weatherCommand>;
<onOffCommand> = [ turn | switch ] [the] ( light | fan | music | radio ) (on | off) ;
<volumeCommand> = turn ( up | down ) the ( volume | music | radio ) ;
<muteCommand> = mute the ( music | radio ) ;
<weatherCommand> = (what's | what) is the ( temperature | weather ) ;
다음 단계는이 스크립트를 사용하여 Kaldi 모델 적응 실험을 설정하는 것입니다.
./speech_kaldi_adapt.py data/models/kaldi-generic-en-tdnn_250-latest dict-en.ipa control.jsgf control-en 여기서는 data/models/kaldi-generic-en-tdnn_250-latest 적응해야 할 모델입니다. dict-en.ipa 는 새로운 모델, control.jsgf 는 JSGF 문법입니다. control-en 문법입니다. 모델이 FST 소스 또는 언어 모델을 지정할 수 있습니다.
실제 적응을 실행하려면 모델 디렉토리로 변경하고 적응 스크립트를 실행하십시오.
cd data/dst/asr-models/kaldi/control-en
./run-adaptation.sh 마지막으로 새로 생성 된 모델에서 Tarball을 만들 수 있습니다.
cd ../../../../..
./speech_dist.sh control-en kaldi adapt./wav2letter_export.py -l en -v generic-en dict-en.ipa generic_en_lang_model_large voxforge_en cv_corpus_v1 librispeech ljspeech m_ailabs_en tedlium3 zamia_en voxforge_en_noisy librispeech_noisy cv_corpus_v1_noisy cv_corpus_v1_phone zamia_en_noisy voxforge_en_phone librispeech_phone zamia_en_phone
pushd data/dst/asr-models/wav2letter/generic-en/
bash run_train.sh./wav2letter_export.py -l de -v generic-de dict-de.ipa generic_de_lang_model_large voxforge_de gspv2 forschergeist zamia_de voxforge_de_noisy voxforge_de_phone zamia_de_noisy zamia_de_phone m_ailabs_de cv_de
pushd data/dst/asr-models/wav2letter/generic-de/
bash run_train.sh자동 검토 사례 생성 :
./wav2letter_auto_review.py -l de w2l-generic-de-latest gspv2실행 :
pushd tmp/w2letter_auto_review
bash run_auto_review.sh
popd결과 적용 :
./wav2letter_apply_review.py제공된 Abook 스크립트를 사용하여 오디오 북 또는 기타 오디오 소스 (예 : Librivox)를 세그먼트하고 전사하는 방법에 대한 메모 :
MP3
```bash
ffmpeg -i foo.mp3 foo.wav
```
MKV
mkvextract tracks foo.mkv 0:foo.ogg
opusdec foo.ogg foo.wavsox foo.wav -r 16000 -c 1 -b 16 foo_16m.wav이 도구는 침묵 감지를 사용하여 좋은 컷 포인트를 찾습니다. 짧은 세그먼트의 균형을 잘 유지하기 위해 설정을 조정할 수 있지만 반으로 나누는 단어는 거의 없습니다.
./abook-segment.py foo_16m.wav설정 :
[guenter@dagobert speech]$ ./abook-segment.py -h
Usage: abook-segment.py [options] foo.wav
Options:
-h, --help show this help message and exit
-s SILENCE_LEVEL, --silence-level=SILENCE_LEVEL
silence level (default: 2048 / 65536)
-l MIN_SIL_LENGTH, --min-sil-length=MIN_SIL_LENGTH
minimum silence length (default: 0.07s)
-m MIN_UTT_LENGTH, --min-utt-length=MIN_UTT_LENGTH
minimum utterance length (default: 2.00s)
-M MAX_UTT_LENGTH, --max-utt-length=MAX_UTT_LENGTH
maximum utterance length (default: 9.00s)
-o OUTDIRFN, --out-dir=OUTDIRFN
output directory (default: abook/segments)
-v, --verbose enable debug output기본적으로 결과 세그먼트는 abook/세그먼트로 끝납니다.
전사 도구는 명령 줄에 지정할 수있는 최대 두 개의 스피커를 지원합니다. 결과적인 Voxforge-Packages는 기본적으로 Abook/Out이됩니다.
./abook-transcribe.py -s speaker1 -S speaker2 abook/segments/Kaldi를 사용하여 반자동 적으로 오디오 북 또는 기타 오디오 소스 (예 : Librivox)를 세그먼트하고 전사하는 방법에 대한 메모 :
당사의 스크립트는 고정 디렉토리 레이아웃에 의존합니다. Librivox 녹음의 세분화가 이러한 스크립트의 주요 응용 프로그램 중 하나이므로 책과 섹션의 용어가 여기에서 사용됩니다. 책의 각 섹션마다 두 개의 소스 파일이 필요합니다. 오디오가 포함 된 웨이브 파일과 전사가 포함 된 텍스트 파일이 필요합니다.
고정 이름 지정 체계는이 예에서 설명하는 것들에 사용됩니다.
Abook/in/librivox/11442-Toten-Seelen/Evak-11442-Toten-Seelen-1.txt Abook/in/librivox/11442-Toten-Seelen/Evak-11442-Toten-Seelen-1.wav Abook/in/librivox/11442-Toten-Seelen/Evak-11442-Toten-Seelen-2.txt Abook/in/librivox/11442-Toten-Seelen/Evak-11442-Toten-Seelen-2.Wav ...
abook-librivox.py 스크립트는 Librivox 기록을 검색하고 디렉토리 구조를 설정하는 데 도움이됩니다. 현재이 도구는 전 사체를 자동으로 검색하지 않지만 수동으로 채워야 할 빈 .txt 파일 (이름 지정 체계에 따라)을 생성합니다.
그러나이 도구는 검색된 오디오를 세분화 스크립트에서 요구하는대로 16kHz 모노 WAV 형식으로 변환합니다. 다른 소스에서 자료를 분류하려는 경우 해당 형식으로 변환하십시오. 이 단계에서 어떤 도구를 사용할 것인지 제안하려면 이전 섹션의 수동 세그먼트 화 지침을 참조하십시오.
참고 : Kaldi 프로세스가 질량 분할을 위해 병렬화되므로 프로세스가 작동하려면 최소 4 개의 오디오 및 프롬프트 파일이 필요합니다.
이 도구는 성적표를 토큰 화하고 OOV 토큰을 감지합니다. 그런 다음 사전에 교체하거나 추가 할 수 있습니다.
./abook-preprocess-transcript.py abook/in/librivox/11442-toten-Seelen/evak-11442-toten-Seelen-1.txt자동 세분화가 작동하려면 현재 사전 (전사 전처리 중에 확장되어야 할 가능성이 높음)에 적합한 GMM 모델이 필요합니다. Pruse는 프롬프트를 다루는 언어 모델을 사용합니다.
먼저, 우리는 목적을 위해 조정 된 언어 모델을 만듭니다.
./abook-sentences.py abook/in/librivox/11442-toten-Seelen/ * .prompt
./speech_build_lm.py abook_lang_model abook abook abook parole_de이제이 언어 모델과 현재 DICT를 사용하여 적응 된 모델을 만들 수 있습니다.
./speech_kaldi_adapt.py data/models/kaldi-generic-de-tri2b_chain-latest dict-de.ipa data/dst/lm/abook_lang_model/lm.arpa abook-de
pushd data/dst/asr-models/kaldi/abook-de
./run-adaptation.sh
popd
./speech_dist.sh -c abook-de kaldi adapt
tar xfvJ data/dist/asr-models/kaldi-abook-de-adapt-current.tar.xz -C data/models/다음으로 자동 분할을 위해 Kaldi 디렉토리 구조 및 파일을 작성해야합니다.
./abook-kaldi-segment.py data/models/kaldi-abook-de-adapt-current abook/in/librivox/11442-toten-Seelen이제 우리는 세분화를 실행할 수 있습니다.
pushd data/dst/speech/asr-models/kaldi/segmentation
./run-segmentation.sh
popd 마지막으로 Voxforge 형식에서 분할 결과를 검색 할 수 있습니다.
./abook-kaldi-retrieve.py abook/in/librivox/11442-toten-Seelen/Zamia-TTS는 Zamia-Steecy 데이터를 기반으로 TTS 목소리를 훈련시키려는 실험 프로젝트입니다. 여기에 다운로드 :
https://goofy.zamia.org/zamia-speech/tts/
이 섹션에서는 NVIDIA의 Tacotron 2 구현을위한 목소리를 훈련시키는 방법에 대해 설명합니다. 결과적인 음성은 Zamia Speech ASR 모델 교육에 사용되는 기본 샘플 속도 인 16kHz의 샘플 속도를 갖습니다. 즉, 여기에서는 사전에 사귀는 목소리 및 샘플 웨이브와 함께 찾을 수있는 16kHz 웨이브 글로우 모델을 사용해야합니다.
https://goofy.zamia.org/zamia-speech/tts/tacotron2/
이제 Tacotron 2 모델 교육은 매우 간단합니다. 첫 번째 단계는 당신이 훈련하고자하는 목소리에 대해 filelists를 내보내는 것입니다.
./speech_tacotron2_export.py -l en -o ../torch/tacotron2/filelists m_ailabs_en mailabselliotmiller다음으로 Tacotron 2 교육 디렉토리로 변경하십시오
cd ../torch/tacotron2``hparams.py ''에서 파일 목록, 샘플링 속도 및 배치 크기를 지정합니다.
diff --git a/hparams.py b/hparams.py
index 8886f18..75e89c9 100644
--- a/hparams.py
+++ b/hparams.py
@@ -25,15 +25,19 @@ def create_hparams(hparams_string=None, verbose=False):
# Data Parameters #
################################
load_mel_from_disk=False,
- training_files='filelists/ljs_audio_text_train_filelist.txt',
- validation_files='filelists/ljs_audio_text_val_filelist.txt',
- text_cleaners=['english_cleaners'],
+ training_files='filelists/mailabselliotmiller_train_filelist.txt',
+ validation_files='filelists/mailabselliotmiller_val_filelist.txt',
+ text_cleaners=['basic_cleaners'],
################################
# Audio Parameters #
################################
max_wav_value=32768.0,
- sampling_rate=22050,
+ #sampling_rate=22050,
+ sampling_rate=16000,
filter_length=1024,
hop_length=256,
win_length=1024,
@@ -81,7 +85,8 @@ def create_hparams(hparams_string=None, verbose=False):
learning_rate=1e-3,
weight_decay=1e-6,
grad_clip_thresh=1.0,
- batch_size=64,
+ # batch_size=64,
+ batch_size=16,
mask_padding=True # set model's padded outputs to padded values
)
훈련을 시작하십시오 :
python train.py --output_directory=elliot --log_directory=elliot/logs./ztts_prepare.py -l en m_ailabs_en mailabselliotmiller elliot./ztts_train.py -v elliot 2>&1 | tee train_elliot.log 모델에서 타르 볼을 구축하려면 speech-dist.sh 스크립트를 사용하십시오.
./speech_dist.sh generic-en kaldi tdnn_sp
내 자신의 스크립트와 내가 만든 데이터 (예 : Lexicon and Transcripts)는 스크립트의 저작권 헤더에 달리 명시되지 않는 한 LGPLV3 라이센스가 부여됩니다.
일부 스크립트와 파일은 다른 스크립트의 작품을 기반으로하며,이 경우 원래 라이센스를 그대로 유지하려는 의도입니다. 자세한 내용은 내부에 저작권 헤더를 확인하십시오.