13
14

More than 5 years have passed since last update.

合成音声(Open Jtalk)でwavファイルを作成しないで再生する

Last updated at Posted at 2017-09-29

はじめに

実行環境はRaspberry Pi 3。

Open JTalkのインストール

$ sudo apt-get -y install open-jtalk libhtsengine1 open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

音声ファイルの作成と再生

$ echo "こんにちは" | 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 sample.wav
$ aplay --quiet sample.wav

-x オプションは形態素解析用の辞書の場所。
-m オプションは音声データの場所。
-ow オプションは出力するファイル名。

aplay コマンドで音声ファイルを再生する。--quiet オプションで、再生時に文字を出力させない。

音声ファイルを作成せずに再生させる

open_jtalkは音声ファイルをファイルへの出力しか行うことができない。-(ハイフン)を指定しても、その名前のファイルが作成される。
そこで、出力ファイル名を/dev/stdoutに指定して、ファイル出力を標準出力とする。

$ echo "こんにちは" | 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 \
   | aplay --quiet

再生用のシェルスクリプト

myjtalk.sh
#!/bin/sh

# パイプで送られればそれを、でなければ引数の文字列を、open_jtalkに与える。
if [ -p /dev/stdin ]; then
    cat -
else
    echo $@
fi | open_jtalk \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow /dev/stdout \
| aplay --quiet
$ chmod +x myjtalk.sh
$ echo "こんにちは" | ./myjtalk.sh
$ ./myjtalk.sh "こんにちは"
13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14