【前文】
お正月企画。
【環境】
Pi Zero WH + Raspbian Buster Lite + USBスピーカだけど、基本 Linux環境なら同じと思われ。
【音声合成環境構築】
音声合成は鉄板 OpenJTalk を使用。
pi@raspberrypiz:~ $ sudo apt-get install open-jtalk
辞書ファイル、音響モデルも必要なので入れる。
pi@raspberrypiz:~ $ sudo apt-get install open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
取り合えず喋らせてみる。
pi@raspberrypiz:~ $ echo "これはテストです" | 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 ./open_jtalk_tmp.wav
pi@raspberrypiz:~ $ sudo aplay open_jtalk_tmp.wav
上記のように原則音声合成は以下の 2ステップからなる。
- テキストから WAVファイルのレンダリング
- WAVファイル再生
パラメータも煩雑だしで、スクリプト化となる訳だけど、WAVファイルを噛ませない方法を公開している方が居るので真似させていただく。
スクリプトもこちらから借用。
合成音声(Open Jtalk)でwavファイルを作成しないで再生する
音響モデルは探せば色々と公開されているのでお好みで追加。
pi@raspberrypiz:~ $ cd /usr/share/hts-voice/
pi@raspberrypiz:/usr/share/hts-voice $ sudo git clone https://github.com/icn-lab/htsvoice-tohoku-f01.git
【百人一首】
問題は歴史的仮名遣いをどう読み上げさせるか。「てふてふ」と書かれていたら「ちょうちょう」と読み上げて欲しい。
【「てふてふ」の謎】歴史的仮名遣いを現代仮名遣いに変換すると?
法則性はある訳だからそれに乗っ取れば何とかなりそうだけど、そのような仕組みは用意されていないようだし、自力で作り上げるのも大変。
ベタだけど、現代仮名遣いに置き換えたテキストを用意することにした。
pi@raspberrypiz:~ $ cat hyakunin
アキノタノ カリオノイオノ トマオアラミ ワガコロモデワ ツユニヌレツツ
ハルスギテ ナツキニケラシ シロタエノ コロモホスチョー アマノカグヤマ
アシビキノ ヤマドリノオノ シダリオノ ナガナガシヨオ ヒトリカモネン
タゴノウラニ ウチイデテミレバ シロタエノ フジノタカネニ ユキワフリツツ
オクヤマニ モミジフミワケ ナクシカノ コエキクトキゾ アキワカナシキ
カササギノ ワタセルハシニ オクシモノ シロキオミレバ ヨゾフケニケル
アマノハラ フリサケミレバ カスガナル ミカサノヤマニ イデシツキカモ
ワガイオワ ミヤコノタツミ シカゾスム ヨオウジヤマト ヒトワユーナリ
ハナノイロワ ウツリニケリナ イタズラニ ワガミヨニフル ナガメセシマニ
コレヤコノ ユクモカエルモ ワカレテワ シルモシラヌモ オーサカノセキ
ワタノハラ ヤソシマカケテ コギイデヌト ヒトニワツゲヨ アマノツリブネ
アマツカゼ クモノカヨイジ フキトジヨ オトメノスガタ シバシトドメン
ツクバネノ ミネヨリオツル ミナノガワ コイゾツモリテ フチトナリヌル
ミチノクノ シノブモジズリ タレユエニ ミダレソメニシ ワレナラナクニ
キミガタメ ハルノノニイデテ ワカナツム ワガコロモデニ ユキワフリツツ
タチワカレ イナバノヤマノ ミネニオール マツトシキカバ イマカエリコン
チハヤブル カミヨモキカズ タツタガワ カラクレナイニ ミズククルトワ
スミノエノ キシニヨルナミ ヨルサエヤ ユメノカヨイジ ヒトメヨクラン
ナニワガタ ミジカキアシノ フシノマモ アワデコノヨオ スグシテヨトヤ
ワビヌレバ イマハタオナジ ナニワナル ミオツクシテモ アワントゾオモー
イマコント イイシバカリニ ナガツキノ アリアケノツキオ マチイデツルカナ
フクカラニ アキノクサキノ シオルレバ ムベヤマカゼオ アラシトユーラン
ツキミレバ チジニモノコソ カナシケレ ワガミヒトツノ アキニワアラネド
コノタビワ ヌサモトリアエズ タムケヤマ モミジノニシキ カミノマニマニ
ナニシオワバ オーサカヤマノ サネカズラ ヒトニシラレデ クルヨシモガナ
オグラヤマ ミネノモミジバ ココロアラバ イマヒトタビノ ミユキマタナン
ミカノハラ ワキテナガルル イズミガワ イツミキトテカ コイシカルラン
ヤマザトワ フユゾサビシサ マサリケル ヒトメモクサモ カレヌトオモエバ
ココロアテニ オラバヤオラン ハツシモノ オキマドワセル シラギクノハナ
アリアケノ ツレナクミエシ ワカレヨリ アカツキバカリ ウキモノワナシ
アサボラケ アリアケノツキト ミルマデニ ヨシノノサトニ フレルシラユキ
ヤマガワニ カゼノカケタル シガラミワ ナガレモアエヌ モミジナリケリ
ヒサカタノ ヒカリノドケキ ハルノヒニ シズゴコロナク ハナノチルラン
タレオカモ シルヒトニセン タカサゴノ マツモムカシノ トモナラナクニ
ヒトワイサ ココロモシラズ フルサトワ ハナゾムカシノ カニニオイケル
ナツノヨワ マダヨイナガラ アケヌルオ クモノイズクニ ツキヤドルラン
シラツユニ カゼノフキシク アキノノワ ツラヌキトメヌ タマゾチリケル
ワスラルル ミオバオモワズ チカイテシ ヒトノイノチノ オシクモアルカナ
アサジウノ オノノシノハラ シノブレド アマリテナドカ ヒトノコイシキ
シノブレド イロニイデニケリ ワガコイワ モノヤオモート ヒトノトーマデ
コイスチョー ワガナワマダキ タチニケリ ヒトシレズコソ オモイソメシカ
チギリキナ カタミニソデオ シボリツツ スエノマツヤマ ナミコサジトワ
アイミテノ ノチノココロニ クラブレバ ムカシワモノオオモワザリケリ
オーコトノ タエテシナクワ ナカナカニ ヒトオモミオモ ウラミザラマシ
アワレトモ ユーベキヒトワ オモオエデ ミノイタズラニ ナリヌベキカナ
ユラノトオ ワタルフナビト カジオタエ ユクエモシラヌ コイノミチカナ
ヤエムグラ シゲレルヤドノ サビシキニ ヒトコソミエネ アキワキニケリ
カゼオイタミ イワウツナミノ オノレノミ クダケテモノオ オモーコロカナ
ミカキモリ エジノタクヒノ ヨルワモエ ヒルワキエツツ モノオコソオモエ
キミガタメ オシカラザリシ イノチサエ ナガクモガナト オモイケルカナ
カクトダニ エヤワイブキノ サシモグサ サシモシラジナ モユルオモイオ
アケヌレバ クルルモノトワ シリナガラ ナオウラメシキ アサボラケカナ
ナゲキツツ ヒトリヌルヨノ アクルマワ イカニヒサシキ モノトカワシル
ワスレジノ ユクスエマデワ カタケレバ キョーオカギリノ イノチトモガナ
タキノオトワ タエテヒサシク ナリヌレド ナコソナガレテ ナオキコエケレ
アラザラン コノヨノホカノ オモイデニ イマヒトタビノ オーコトモガナ
メグリアイテ ミシヤソレトモ ワカヌマニ クモガクレニシ ヨワノツキカナ
アリマヤマ イナノササハラ カゼフケバ イデソヨヒトオ ワスレヤワスル
ヤスラワデ ネナマシモノオ サヨフケテ カタブクマデノ ツキオミシカナ
オーエヤマ イクノノミチノ トーケレバ マダフミモミズ アマノハシダテ
イニシエノ ナラノミヤコノ ヤエザクラ キョーココノエニ ニオイヌルカナ
ヨオコメテ トリノソラネワ ハカルトモ ヨニオーサカノ セキワユルサジ
イマワタダ オモイタエナン トバカリオ ヒトズテナラデ ユーヨシモガナ
アサボラケ ウジノカワギリ タエダエニ アラワレワタル セゼノアジロギ
ウラミワビ ホサヌソデダニ アルモノオ コイニクチナン ナコソオシケレ
モロトモニ アワレトオモエ ヤマザクラ ハナヨリホカニ シルヒトモナシ
ハルノヨノ ユメバカリナル タマクラニ カイナクタタン ナコソオシケレ
ココロニモ アラデウキヨニ ナガラエバ コイシカルベキ ヨワノツキカナ
アラシフク ミムロノヤマノ モミジバワ タツタノカワノ ニシキナリケリ
サビシサニ ヤドオタチイデテ ナガムレバ イズクモオナジ アキノユーグレ
ユーサレバ カドタノイナバ オトズレテ アシノマロヤニ アキカゼゾフク
オトニキク タカシノハマノ アダナミワ カケジヤソデノ ヌレモコソスレ
タカサゴノ オノエノサクラ サキニケリ トヤマノカスミ タタズモアラナン
ウカリケル ヒトオハツセノ ヤマオロシヨ ハゲシカレトワ イノラヌモノオ
チギリオキシ サセモガツユオ イノチニテ アワレコトシノ アキモイヌメリ
ワタノハラ コギイデテミレバ ヒサカタノ クモイニマゴー オキツシラナミ
セオハヤミ イワニセカルル タキガワノ ワレテモスエニ アワントゾオモー
アワジシマ カヨーチドリノ ナクコエニ イクヨネザメヌ スマノセキモリ
アキカゼニ タナビククモノ タエマヨリ モレイズルツキノ カゲノサヤケサ
ナガカラン ココロモシラズ クロカミノ ミダレテケサワ モノオコソオモエ
ホトトギス ナキツルカタオ ナガムレバ タダアリアケノ ツキゾノコレル
オモイワビ サテモイノチワ アルモノオ ウキニタエヌハ ナミダナリケリ
ヨノナカヨ ミチコソナケレ オモイイル ヤマノオクニモ シカゾナクナル
ナガラエバ マタコノゴロヤ シノバレン ウシトミシヨゾ イマワコイシキ
ヨモスガラ モノオモーコロワ アケヤラヌ ネヤノヒマサエ ツレナカリケリ
ナゲケトテ ツキヤワモノオ オモワスル カコチガオナル ワガナミダカナ
ムラサメノ ツユモマダヒヌ マキノハニ キリタチノボル アキノユーグレ
ナニワエノ アシノカリネノ ヒトヨユエ ミオツクシテヤ コイワタルベキ
タマノオヨ タエナバタエネ ナガラエバ シノブルコトノ ヨワリモゾスル
ミセバヤナ オジマノアマノ ソデダニモ ヌレニゾヌレシ イロワカワラズ
キリギリス ナクヤシモヨノ サムシロニ コロモカタシキ ヒトリカモネン
ワガソデワ シオヒニミエヌ オキノイシノ ヒトコソシラネ カワクマモナシ
ヨノナカワ ツネニモガモナ ナギサコグ アマノオブネノ ツナデカナシモ
ミヨシノノ ヤマノアキカゼ サヨフケテ フルサトサムク コロモウツナリ
オオケナク ウキヨノタミニ オオーカナ ワガタツソマニ スミゾメノソデ
ハナサソー アラシノニワノ ユキナラデ フリユクモノワ ワガミナリケリ
コヌヒトオ マツオノウラノ ユーナギニ ヤクヤモシオノ ミモコガレツツ
カゼソヨグ ナラノオガワノ ユーグレワ ミソギゾナツノ シルシナリケル
ヒトモオシ ヒトモウラメシ アジキナク ヨオオモーユエニ モノオモーミワ
モモシキヤ フルキノキバノ シノブニモ ナオアマリアル ムカシナリケリ
力業ですな。
【百人一首読み上げ】
スクリプトは前述のサイトから myjtalk.sh
を借用。
pi@raspberrypiz:~ $ cat hyakunin | xargs -L1 ./myjtalk.sh
百人一首を格納したテキストファイル hyakunin
を一行ずつスクリプトに渡すことにより読み上げを行う。
ランダムなら以下。
pi@raspberrypiz:~ $ cat hyakunin | sort -R | xargs -L1 ./myjtalk.sh
良いお正月を。