|
カテゴリ:スクリプト
日本語音声合成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コマンドで再生させました。 私の場合、シェルスクリプトを ~/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
[スクリプト] カテゴリの最新記事
|