14
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

はじめに

実行環境は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 "こんにちは"
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?