Edited at

JTalkの音声変換と音声出力をシェルで一気にやる(ラズパイ用)


■はじめに

ラズパイにてJTalkを利用する際に、長いコマンドをいちいち書きたくないため、シェルを作成しました。

#3年ぶりにシェルを触ったので、細かい部分はご愛嬌。

・引数に日本語を指定して音声出力するシェル

・引数にファイルを指定して音声出力するシェル


■JTalkの使い方

JTalkは、「日本語文字列を日本語音声に変換」するものです。

よって、音声出力する(音を鳴らす)部分は持ち合わせていません。

今回は、以下にて音声出力まで行います。

順番
役割
内容
実体

1
セリフ作成
日本語のセリフを作成
手作り

2
日本語音声変換
セリフを音声ファイルとして作成
JTalk

3
音声出力
音声ファイルを音として出力
aplay


■前提

JTalk音響モデル

/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice

JTalk辞書モデル

/var/lib/mecab/dic/open-jtalk/naist-jdic/


■引数に日本語を指定して音声出力するシェル


JtalkFromArg.sh

root@raspberrypi:/usr/jtalk# cat ./JtalkFromArg.sh 

#!/bin/sh

### Making WAV File from Command Line Argument
### and speaking with aplay command

#TempWAVFile
TMP=/tmp/jtalkTmp.wav

if [ $# -ne 1 ]; then
echo "Error: argument not exist"
exit 1
fi

echo "$1" | 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 $TMP \

chmod 777 $TMP
aplay --quiet $TMP

exit 0
#EOF


・使うとき

root@raspberrypi:/usr/jtalk# ./JtalkFromArg.sh テスト用音声を出力します

root@raspberrypi:/usr/jtalk#


■引数にファイルを指定して音声出力するシェル


JtalkFromFile.sh

root@raspberrypi:/usr/jtalk# cat ./JtalkFromFile.sh 

#!/bin/sh

### Making WAV File from File
### and speaking with aplay command

#TempWAVFile
TMP=/tmp/jtalkTmp.wav

if [ ! -e $1 ]; then
echo "Error: file not exist"
exit 1
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 $TMP \
$1

chmod 777 $TMP
aplay --quiet $TMP

exit 0
#EOF


・使うとき

root@raspberrypi:/usr/jtalk# cat ./testvoice01.txt  

テスト用音声ファイルです。
root@raspberrypi:/usr/jtalk# ./JtalkFromFile.sh ./testvoice01.txt
root@raspberrypi:/usr/jtalk#


■出典/参考

Open JTalk

http://open-jtalk.sourceforge.net/

Raspberry Piでテキストを音声化する (Open JTalk)

http://www.taneyats.com/entry/raspi-open-jtalk

Ras Pi 3 スピーカーから音を鳴らす!そしてOpen JTalkで日本語を喋らせる!

https://iot-plus.net/make/raspi/speaker-open-jtalk-japanese-speech/

Raspberry Pi3に日本語で喋ってもらうまで

https://qiita.com/Higemal/items/6dde8637a680bfe200ca