Open JTalk in Docker

以前にもOpen JTalkを触っていたが、時間が経った&記事が雑だったのでDockerでまとめ直しておく。 Open JTalk - aoirint’s note Dockerfileを作る。 FROM ubuntu:bionic RUN apt-get update && \ apt-get install -y \ open-jtalk \ open-jtalk-mecab-naist-jdic \ hts-voice-nitech-jp-atr503-m001 WORKDIR /data ENTRYPOINT [ "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ファイルを見るとこのような形式。 ...

2021年4月4日 · aoirint

Open JTalk mpg123

Open JTalkの出力したwavをmpg123で再生したらエラー出た。 [src/libmpg123/layer1.c:30] error: Illegal bit allocation value. [src/libmpg123/layer1.c:171] error: Aborting layer I decoding after step one. ffmpegでmp3に変換して再生するとok。mpg123では同じくエラーで変換できなかった。 ffmpeg -i b.wav b.mp3 mpg123 b.mp3 ffmpegのinfo Guessed Channel Layout for Input Stream #0.0 : mono Input #0, wav, from 'b.wav': Duration: 00:00:01.17, bitrate: 768 kb/s Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, mono, s16, 768 kb/s Input #0, mp3, from 'b.mp3': Metadata: encoder : Lavf57.56.101 Duration: 00:00:01.20, start: 0.023021, bitrate: 65 kb/s Stream #0:0: Audio: mp3, 48000 Hz, mono, s16p, 64 kb/s ffmpeg -i b.wav c.wav これもダメ ...

2019年5月25日 · aoirint

Open JTalk

# Open JTalk Test # python3 # exec `apt install open-jtalk open-jtalk-mecab-naist-jdic` # get `mei_normal.htsvoice` from http://www.mmdagent.jp/ import subprocess p = subprocess.Popen('open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m mei/mei_normal.htsvoice -r 1.0 -ow /dev/stdout', stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) text = 'こんにちは' out, err = p.communicate(text.encode('utf-8')) print(text) print(err) # outにwavのバイナリが入ってる。必要に応じてここ変えてね with open('b.wav', 'wb') as fp: fp.write(out) subprocess で shell=True でリストを与えたときの挙動 - Qiita 合成音声(Open Jtalk)でwavファイルを作成しないで再生する - Qiita python - input directly in process.communicate() in subprocess library - Stack Overflow subprocessについて調べたメモ - Qiita Debian Jessie に OpenJtalk を入れてテキストを読み上げてみた - 残しときます(自分用) 日本語音声合成Open JTalkをPythonから実行する - 動かざることバグの如し mmdagent.jp Open JTalk - HMM-based Text-to-Speech System See also mpg123

2019年5月25日 · aoirint