RaspberryPi
ラズパイ
Raspberrypi3
jtalk

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