743187 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Free Space

Debian GNU/Linux、Windows etc に関して、
雑文を掲載しています。 
個人的な備忘録ですので、皆様にあてはまるかどうかは、
全くわかりません。
参考にされる場合も、結果については、自己責任
ということで、よろしくお願いいたします。










Keyword Search

▼キーワード検索

Calendar

Archives

2025.05
2025.04
2025.03
2025.02
2025.01
2024.12
2024.11
2024.10
2024.09
2024.08

Category

Recent Posts

Rakuten Card

2018.02.14
XML
カテゴリ:スクリプト
日本語音声合成Open Jtalkを使う2 シェルスクリプト編

インストールしたOpen Jtalkですが、Guiのフロントエンドといったものは、知らないので、terminal コマンドラインで使用します。
コマンドを打ち込みまくっても使えますが、あまりにも大変なので、シェルスクリプトにして、使いやすいようにします。

jtalk1.sh

#!/bin/bash
# パイプで送られればそれを、でなければ引数の文字列を、open_jtalkに与える。
if [ -p /dev/stdin ]; then
    cat -
else
    echo $@
fi | open_jtalk \
-r 1.0 \
-m /usr/share/hts-voice/mei/mei_normal.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow ~/Documents/temp1.wav
cvlc --play-and-exit --quiet ~/Documents/temp1.wav

​​
というような感じで。
男性の声にするには、-mオプションの後を
/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
に変更してください。
wavファイルを作りたくない、という人は、alsa-utilsパッケージをインストールすると、/dev/stdout  へ出力し、aplayコマンドへパイプで流し込めるらしいです。私はwavファイルを作って、cvlcコマンドで再生させました。
​​​​読み上げスピードは、-rオプションの後の数字を変えてください。

私の場合、シェルスクリプトを ~/sh/
というディレクトリに入れています。実行権限を与えておきます。
$ chmod +x jtalk1.sh

さて、動くかどうか試してみましょう。
$ ~/sh/jtalk1.sh "ハローワールド"
で、「ハローワールド」と読み上げてくれれば、OKです。

パイプで流し込む例としては、
$ date +"%-H時%-M分です" | ~/sh/jtalk1.sh
と打ち込めば、時刻告知してくれます。

~/.bashrc に、
alias imananji='date +"%-H時%-M分です" | ~/sh/jtalk1.sh'
とalias定義しておけば、
$ imananji
で、時刻告知してくれます。

とりあえず、音声合成の確認はできましたが、テキストファイルをcatでパイプで送り込むと、1行しか読んでくれません。
次回は、その対策を考えて、むっちゃ長い文章を読み上げさせてみましょう。

​​​​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2019.01.25 19:14:49



© Rakuten Group, Inc.
X