仮組み完成:SofTalkをシェルスクリプトから利用、ゆっくりしていってねー
目的
Ubuntu10.04 上で、読み上げ式クリッピングサービス(自分の指定したキーワードでの情報収集)を毎朝実行する。
経過報告1(前回)
wine から softalk を利用できるようになった。
経過報告2
結論としては、目的を実行できるようになりました。
追加の仕様と縛りは下記です。
- コンテンツを追加できる(キーワード指定して…とはいきませんでしたが)
- シェルスクリプトだけで作成する
☆テスト音声(音量注意)
「雨の降る」が「うのふる」に。
音読み大好きだし、たまに謎の熟語を発します。
動作について
「読み上げ文章作製」
読み上げ文章作製は備忘録も兼ねてるので、詳細に記載します。
コマンドを実行するたびに、文字種がシンプルになっていくのが分かると思います。
煩雑になった理由は下記のためです。
- kakasi は EUC のみ対応
- softalk は Shift_JIS のみ対応で、ひらがなと特定の記号(,?など)だけにしないといけない。*1
- おそらく UTF-8 は、経由しなくて良いがとりあえず放置(nkt -w で半角カナ→全角カナ変換できるため放置してたが、kakasi が優秀で形骸化)
- 「英語からカタカナ読み辞書」は自作で EUC で作ったため
- 数字は prefix をつける必要がある
コマンド | 文字コード | 記号 | ABC全角 | ABC | abc全角 | abc | 123全角 | 123 | カタカナ | カタカナ | ひらがな | 漢字 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
sed & tr | EUC | 記号→削除 | ABC全角 | ABC | abc全角 | abc | 123全角 | 123 | カタカナ | カタカナ | ひらがな | 漢字 |
nkf -w | UTF-8 | ABC全角 | ABC | abc全角 | abc | 123全角 | 123 | カタカナ | カタカナ | ひらがな | 漢字 | |
sed 'y/AB(全)ab(全)ab(半)123(全)/ABABAB123/' | UTF-8 | ABC全角→ABC | ABC | abc全角→ABC | abc→ABC | 123全角→123 | 123 | カタカナ | カタカナ | ひらがな | 漢字 | |
mecab --node-format=%pS%f[8] --unk-format=%M --eos-format=, | UTF-8 | ABC | 123 | カタカナ | カタカナ | ひらがな→カタカナ | 今日→キョー | |||||
nkf -e | EUC | ABC | 123 | カタカナ | カタカナ | |||||||
mecab -d 英語からカタカナ読み辞書 | EUC | ABC→カタカナ | 123 | カタカナ | カタカナ | |||||||
kakasi -KH | EUC | 123 | カタカナ→ひらがな | カタカナ→ひらがな | ||||||||
nkf -s | S_JIS | 123 | ひらがな | |||||||||
sed -i -e "s/\([0-9]\+\)/ | S_JIS | ひらがな |
まとめ
フリーの日本語音声合成エンジンとしては OpenJTalk も
あったのですが、手軽感とある程度の人間らしさで Softalk に軍配
が上がったわけです。
Softalk はなんだかんだで Winアプリなので、将来的には OpenJTalk
使ってみたいですね。
参考サイト
sed*2,*3,*4,*5
tr*6,*7
mecab*8,*9,*10
辞書作製*11,*12
英語→カタカナ読みデータ(GPLで公開されているBEPを利用)*13
nkf*14,*15,*16
cron*17,*18,*19
expr*20
if-then-else*21,*22
for*23,*24
ps*25
正規表現*26
vimの文字コード自動認識*27
↑これがかなりお勧めです。KaWaZさんありがとうございます。
後日談
しかし、実は音声合成エンジンとしては株式会社アクエスト
さんの AquesTalk の評価版をダウンロードできるんですよね。(linux版も)
ソフトウェアはあくまで評価版ですし、自分は同サイトで
発売されている「音声合成LSI」を購入しようかと考えてます。
http://www.a-quest.com/products/aquestalkpicolsi.html
以上。
*1:http://www.a-quest.com/products/aquestalk.html
*2:http://linux.just4fun.biz/逆引きUNIXコマンド/キーワードからキーワードまでの文字列を抜き出す方法・sedコマンド.html
*3:http://www.envinfo.uee.kyoto-u.ac.jp/user/susaki/command/c_sed.html
*4:http://www.ibm.com/developerworks/jp/linux/library/l-sed2/
*5:http://www001.upp.so-net.ne.jp/hata/sed_reference.html#seiki2
*6:http://linux.just4fun.biz/逆引きUNIXコマンド/テキストから改行を削除する.html
*7:http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230906/
*8:http://www.mwsoft.jp/programming/munou/mecab_command.html
*9:http://chasen.org/~taku/blog/archives/2006/01/autolink.html
*10:http://denspe.blog84.fc2.com/?mode=m&no=170
*11:http://mecab.googlecode.com/svn/trunk/mecab/doc/dic-detail.html
*12:http://d.hatena.ne.jp/mitaina/20090909/1252490920
*14:http://blog.layer8.sh/ja/2011/12/23/文字コード変換コマンドnkfの使い方まとめ-linux/
*15:http://d.hatena.ne.jp/rx7/20110205/p1
*16:http://d.hatena.ne.jp/takuya_1st/20100511/1273585953
*17:http://tsuttayo.jpn.org/crond/
*18:https://ja.wikipedia.org/wiki/Crontab
*19:http://www.linuxquestions.org/questions/linux-newbie-8/display%3D-0-0-vs-display%3Dlocalhost-0-0-a-933940/
*20:http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231170/
*21:http://www.pochinet.org/linuxX0204.htm
*22:http://linux.just4fun.biz/逆引きシェルスクリプト/ファイルサイズが0より大きいかを確認する.html
*23:http://sandhill.fc2web.com/tips/shell/shell_04.html
*24:http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35752&forum=10
*25:http://isann.blog2.fc2.com/blog-entry-258.html
*26:http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231171/?ST=oss