В течение 24 часов транскрибируйте 40 часов записанной речи на неожиданном языке.
Создайте ASR для неожиданного языка L из предварительно обученной акустической модели, словарного произношения L и модели L. Этот подход превращает телефоны непосредственно в L слов. Это менее шумно, чем использование множества перекрестных обученных ASR, чтобы сделать английские слова, из которых извлекаются строки телефона, объединены с помощью PTGEN и восстанавливаются в L words.
Полное описание с измерениями производительности находится на arxiv, а в:
M Hasegawa-Johnson, L Rolston, C Goudeseune, Ga Levow и K Kirchhoff,
Графма-фонема трансдукция для поперечного языка ASR, стат. Ланг Речь Proc.3–19, 2020.
Если у вас еще нет версии Kaldi новее, чем 30 сентября 2016 года, Get и создайте ее, следуя инструкциям в файлах установки.
git clone https://github.com/kaldi-asr/kaldi
cd kaldi/tools; make -j $(nproc)
cd ../src; ./configure --shared && make depend -j $(nproc) && make -j $(nproc)
Поместите распознавание Phoneme Phoneme Brno U. Technology рядом с обычным каталогом S5.
sudo apt-get install libopenblas-dev libopenblas-base
cd kaldi/egs/aspire
git clone https://github.com/uiuc-sst/brno-phnrec.git
cd brno-phnrec/PhnRec
make
Поместите это рядом с обычным каталогом s5 .
(Пакет Nodejs для ./sampa2ipa.js .)
sudo apt-get install nodejs
cd kaldi/egs/aspire
git clone https://github.com/uiuc-sst/asr24.git
cd asr24
cd kaldi/egs/aspire/asr24
wget -qO- http://dl.kaldi-asr.org/models/0001_aspire_chain_model.tar.gz | tar xz
steps/online/nnet3/prepare_online_decoding.sh
--mfcc-config conf/mfcc_hires.conf
data/lang_chain exp/nnet3/extractor
exp/chain/tdnn_7b exp/tdnn_7b_chain_online
utils/mkgraph.sh --self-loop-scale 1.0 data/lang_pp_test
exp/tdnn_7b_chain_online exp/tdnn_7b_chain_online/graph_pp
В exp/ conf/ tree final.mdl файлы phones.txt
Это создает data подкатализации и exp . Его последняя команда mkgraph.sh может занять 45 минут (30 для Ctve Mandarin) и использовать много памяти, потому что он вызывает fstdeterminizestar на большой языковой модели, как объясняет Дэн Повеи.
sox MySpeech.wav -r 8000 8khz.wav , или ffmpeg -i MySpeech.wav -acodec pcm_s16le -ac 1 -ar 8000 8khz.wav . (Scripts cmd.sh и path.sh скажут, где найти kaldi/src/online2bin/online2-wav-nnet3-latgen-faster .)
. cmd.sh && . path.sh
online2-wav-nnet3-latgen-faster
--online=false --do-endpointing=false
--frame-subsampling-factor=3
--config=exp/tdnn_7b_chain_online/conf/online.conf
--max-active=7000
--beam=15.0 --lattice-beam=6.0 --acoustic-scale=1.0
--word-symbol-table=exp/tdnn_7b_chain_online/graph_pp/words.txt
exp/tdnn_7b_chain_online/final.mdl
exp/tdnn_7b_chain_online/graph_pp/HCLG.fst
'ark:echo utterance-id1 utterance-id1|'
'scp:echo utterance-id1 8khz.wav|'
'ark:/dev/null'
wget -qO- http://kaldi-asr.org/models/0002_cvte_chain_model.tar.gz | tar xz
steps/online/nnet3/prepare_online_decoding.sh
--mfcc-config conf/mfcc_hires.conf
data/lang_chain exp/nnet3/extractor
exp/chain/tdnn_7b cvte/s5/exp/chain/tdnn
utils/mkgraph.sh --self-loop-scale 1.0 data/lang_pp_test
cvte/s5/exp/chain/tdnn cvte/s5/exp/chain/tdnn/graph_pp
$L/train_all/text Поместите строки слов в L (соскребая откуда), примерно 10 слов на строку, не более 500 тысяч строк. Это может быть довольно шумно, потому что они будут очищены. Into $L/train_all/g2aspire.txt Поместите G2P, несколько сотен строк, каждый из которых содержат графы (ы), пробелы и телефоны с ограниченным пространством Aspire.
Если у него есть линейные терминаторы CR, преобразуйте их в стандартные в VI с %s/^M/r/g , набирая Control-V перед ^M .
Если он начинается с рода, удалите его: vi -b g2aspire.txt и просто x этого персонажа.
Если вам нужно построить g2p, ./g2ipa2asr.py $L_wikipedia_symboltable.txt aspire2ipa.txt phoibletable.csv > $L/train_all/g2aspire.txt .
./run.sh $L производит L-Customied Hclg.fst../run_from_wordlist.sh $L . Смотрите этот сценарий для использования.На IFP-serv-03.ifp.illinois.edu, получите речь LDC и конвертируйте ее в плоский директор 8 кГц.
cd /ws/ifp-serv-03_1/workspace/fletcher/fletcher1/speech_data1/Russian/LDC2016E111/RUS_20160930
cd /ws/ifp-serv-03_1/workspace/fletcher/fletcher1/speech_data1/Tamil/TAM_EVAL_20170601/TAM_EVAL_20170601
cd /ws/ifp-serv-03_1/workspace/fletcher/fletcher1/speech_data1/Uzbek/LDC2016E66/UZB_20160711
mkdir /tmp/8k
for f in */AUDIO/*.flac; do sox "$f" -r 8000 -c 1 /tmp/8k/$(basename ${f%.*}.wav); done
tar cf /workspace/ifp-53_1-data/eval/8k.tar -C /tmp 8k
rm -rf /tmp/8k
Для вавиловых файлов .sph:
cd /ws/ifp-serv-03_1/workspace/fletcher/fletcher1/speech_data1/Assamese/LDC2016E02/conversational/training/audio
tar cf /tmp/foo.tar BABEL*.sph
scp /tmp/foo.tar ifp-53:/tmp
На IFP-53,
mkdir ~/kaldi/egs/aspire/asr24/$L-8khz
cd myTmpSphDir
tar xf /tmp/foo.tar
for f in *.sph; do ~/kaldi/tools/sph2pipe_v2.5/sph2pipe -p -f rif "$f" /tmp/a.wav;
sox /tmp/a.wav -r 8000 -c 1 ~/kaldi/egs/aspire/asr24/$L-8khz/$(basename ${f%.*}.wav); done
На хосте, который будет запускать транскрибинг, например, IFP-53:
cd kaldi/egs/aspire/asr24
wget -qO- http://www.ifp.illinois.edu/~camilleg/e/8k.tar | tar xf -
mv 8k $L-8khz
./mkscp.rb $L-8khz $(nproc) $L расщепляет задачи ASR на одну задание на ядро процессора, каждая работа с примерно одинаковой продолжительностью звука.$L-8khz , речевой речевой файл 8 кГц.$L-submit.sh ../$L-submit.sh запускает эти задания параллельно.grep -h -e '^TAM_EVAL' $L/lat/*.log | sort > $L-scrips.txt (или ... ^RUS_ , ^BABEL_ и т. Д.).elisa.tam-eng.eval-asr-uiuc.y3r1.v8.xml.gz , с временной меткой 11 июня и версии 8,grep -h -e '^TAM_EVAL' tamil/lat/*.log | sort | sed -e 's/ /t/' | ./hyp2jonmay.rb /tmp/jon-tam tam 20180611 8-e 's/Ñ/N/g' .)cat $L/lat/*.ascii | sort > $L-nbest.txt .Если ваши транскрипции использовали бессмысленные английские слова, преобразуйте их в телефоны, а затем через тройку или самую длинную общую подстроение в L-Words:
./trie-$L.rb < trie1-scrips.txt > $L-trie-scrips.txt .make multicore-$L ; ждать; grep ... > $L-lcs-scrips.txt .RUS_20160930 был транскрибирован за 67 минут, 13 МБ/мин, в 12 раз быстрее, чем в реальном времени.
Подмножество 3,1 ГБ ASSAM LDC2016E02 транскрибировали за 440 минут, 7 МБ/мин, 6,5x в реальном времени. (Это могло быть медленнее, потому что он исчерпал память IFP-53.)
Арабский/nemlar_speech/nmbcn7ar, 2,2 ГБ (40 часов), была транскрибирована за 147 минут, 14 МБ/мин, 16x в реальном времени. (Это могло быть быстрее, потому что это было несколько длинных (получасовые) файлы вместо многих коротких.)
TAM_EVAL_20170601 был транскрибирован за 45 минут, 21 МБ/мин, 19x в реальном времени.
Генерация решетки $L/lat/* заняло 1,04x дольше для российства, на 0,93 раза дольше (!) Для арабского, на 1,7 раза больше для тамильского.