ラズパイでできること…RaspberryPiに小説を朗読してもらうことにしよう!
今回は機能実装をします!
前回、構想編ということだったので、今回は実装編になります。
実装方法
それでは実装します。
まずは小説の下ごしらえをしましょう。
小説の下ごしらえ
青空文庫から好きな小説をテキスト形式でダウンロードします。(青空文庫のリンク)
テキストファイルをテキストエディタで開きます。テキストエディタは正規表現が扱えるものにした方が良いです。私の環境はMacなのでmiを使用しています。
消さなければならないのは、《○○》や[○○]といったもので囲まれています。
正規表現で置換していきます。正規表現で《○○》や[○○]を検索し、置換文字を何も指定しなければ削除したことになります。
例として「《○○》」を検索する正規表現は以下の通りです。(エディタによって異なる場合があります)
正規表現:《[^》]+》
これで不要な記号が削除されました。まだ他にも残っている場合は、正規表現を変えて削除して下さい。
次に句点で改行となるように整えます。
まず、改行コードを全て削除します。こちらも正規表現を使います。
改行コードは「¥r」や「¥n」で検索できると思います。
…これで、小説の全文が1行になります。
次に、句点を「句点+改行コード」となるように置換します。
…これで、テキスト全てが句点直後に改行された文章になっていると思います。
最後に、下ごしらえしたテキストファイルをUTF-8で保存します。(SJISファイルだとOpenJTalkで読めません)
朗読コマンドの作成
小説は句点毎に改行されているテキストファイルです。
OpenJTalkの引数として渡したファイルを開き、先頭から1行ずつ読み込んで喋る…ということをファイルの最終行まで繰り返せば良いのです。
シェルスクリプトで実装します。
1 2 3 4 5 6 7 8 | #!/bin/bash FILENAME=$1 while read line do jsay ${line} done < ${FILENAME} |
jsayコマンドについては、こちらの記事を参考にして下さい。
朗読コマンドに実行権限を与え、下記コマンドで実行できます。
$ ./roudoku.sh bocchan.txt
引数に渡しているbocchan.txtは、小説のテキストファイルですので、下ごしらえで作ったファイル名を指定して下さい。
見ての通り、エラー処理や便利機能は一切実装していないため、必要に応じて追加実装する必要があります。
まとめ
どうでしょう?ひたすら朗読をしていると思います。(笑)
お分かりだと思いますが、再開機能はありません。シェルを止めるにはCtrl+Cで止めて下さい。
スクリプトをちょっと改造すれば、指定行からの再開なども簡単に実装できると思います。
次は何を作ろうかなー!
スポンサーリンク
[…] Previous PostPrevious RaspberryPiに小説を朗読してもらう(実装編)Next PostNext 香川(うどん県)の「もり家」に行ってきた […]