#■はじめに
ラズパイにて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/ |
#■引数に日本語を指定して音声出力するシェル
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#
#■引数にファイルを指定して音声出力するシェル
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