Open JTalk in Docker
以前にもOpen JTalkを触っていたが、時間が経った&記事が雑だったのでDockerでまとめ直しておく。
Dockerfileを作る。
FROM ubuntu:bionicRUN apt-get update && \apt-get install -y \open-jtalk \open-jtalk-mecab-naist-jdic \hts-voice-nitech-jp-atr503-m001WORKDIR /dataENTRYPOINT [ "open_jtalk" ]
mecab-naist-jdicは形態素解析辞書。 hts-voiceはボイスファイルだが、別途htsvoiceを用意する場合は不要。
ビルドする。
docker build . -t aoirint/open_jtalk
実行する。
echo "こんにちは" > text.txt# テキストファイルの文字列から音声を生成docker run --rm -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice text.txt -ow output.wav# 標準入力の文字列から音声を生成cat text.txt | docker run --rm -i -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow output.wav# 標準入力の文字列から音声を生成して、標準出力に書き出す(wav形式)cat text.txt | docker run --rm -i -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow /dev/stdout > output.wav
ffmpegで出力されたwavファイルを見るとこのような形式。
Input #0, wav, from 'output.wav':Duration: 00:00:01.61, bitrate: 768 kb/sStream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, mono, s16, 768 kb/s
続いて、mmdagent.jpで配布されているボイスファイル(htsvoice)を使ってみる。
ここから最新のMMDAgent Exampleをダウンロードする。
Voice/mei/mei_normal.htsvoice
に目的のボイスファイルがある(CC BY 3.0)。
これを作業ディ レクトリ($PWD
)にコピーしておく。
# 他のhtsvoiceを使う(mei_normal.htsvoice)docker run --rm -v "$PWD:/data" aoirint/open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic/ -m /data/mei_normal.htsvoice text.txt -ow output.wav
ヘルプはこのようになっている。
$ docker run --rm -it -v "$PWD:/data" aoirint/open_jtalk -hThe Japanese TTS System "Open JTalk"Version 1.10 (http://open-jtalk.sourceforge.net/)Copyright (C) 2008-2016 Nagoya Institute of TechnologyAll rights reserved.The HMM-Based Speech Synthesis Engine "hts_engine API"Version 1.10 (http://hts-engine.sourceforge.net/)Copyright (C) 2001-2015 Nagoya Institute of Technology2001-2008 Tokyo Institute of TechnologyAll rights reserved.Yet Another Part-of-Speech and Morphological Analyzer "Mecab"Version 0.996 (http://mecab.sourceforge.net/)Copyright (C) 2001-2008 Taku Kudo2004-2008 Nippon Telegraph and Telephone CorporationAll rights reserved.NAIST Japanese DictionaryVersion 0.6.1-20090630 (http://naist-jdic.sourceforge.jp/)Copyright (C) 2009 Nara Institute of Science and TechnologyAll rights reserved.open_jtalk - The Japanese TTS system "Open JTalk"usage:open_jtalk [ options ] [ infile ]options: [ def][ min-- max]-x dir : dictionary directory [ N/A]-m htsvoice : HTS voice files [ N/A]-ow s : filename of output wav audio (generated speech) [ N/A]-ot s : filename of output trace information [ N/A]-s i : sampling frequency [ auto][ 1-- ]-p i : frame period (point) [ auto][ 1-- ]-a f : all-pass constant [ auto][ 0.0-- 1.0]-b f : postfiltering coefficient [ 0.0][ 0.0-- 1.0]-r f : speech speed rate [ 1.0][ 0.0-- ]-fm f : additional half-tone [ 0.0][ -- ]-u f : voiced/unvoiced threshold [ 0.5][ 0.0-- 1.0]-jm f : weight of GV for spectrum [ 1.0][ 0.0-- ]-jf f : weight of GV for log F0 [ 1.0][ 0.0-- ]-g f : volume (dB) [ 0.0][ -- ]-z i : audio buffer size (if i==0, turn off) [ 0][ 0-- ]infile:text file [stdin]