気の向くままに辿るIT/ICT
webzoit.net
ホームページ

音声合成・音声読み上げソフトウェア

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
フリーソフト・オープンソースを活用しよう。

音声合成・音声読み上げソフトウェア

音声合成・音声読み上げソフトウェア

2018/09/10

 なんと1000年以上も歴史があるらしき音声合成の試みも近年、音声合成・音声読み上げにも多くのソフトウェアや中には、AITalkやhttp://voicetext.jp/、http://open-jtalk.sp.nitech.ac.jp/のようなWebサービス(デモ)を提供してくれているサイトもあります。

 音声合成・合成音声とは、人工的に人間の音声を作ることであり、作った音声は、もちろん、何らかの形で発声させることができます。

 世界各国語かつ、男性風、女性風の声、感情のこもった声、より自然な声色などが既に実現されています。

 このような仕組みは、ゲームの音声や初音ミクのようなキャラクタを生み出したり、視覚障害を持つ方々や幼児、外国人など文字を読むのが不得手な方々のサポートとしてウェブサイトなどの読み上げ機能に利用されたり、音声案内などにも利用されているようです。

フリーソフト

 Windowsには、簡単に導入できるGUIの音声読み上げソフトウェアがあるようですが、ここでは、Linux用のソフトを探してみました。

 自身の使っているDebian含め、Linuxでは、eSpeak、eSpeak-NG、mbrola、festival等々の各国語を合成・発声できるものと日本語を合成できるOpen JTalkなどがあるようです。

 Open JTalkについては、標準は男性風の声ですが、meiという女性用の声データもあるとのこと。

eSpeak/mbrola/Open JTalkのインストール

$ apt install espeak mbrola open-jtalk

 espeak、mbrolaやopen-jtalkをインストールしつつ、必要に応じてespeak-data、open-jtalk-mecab-naist-jdicやhts-voice-nitech-jp-atr503-m001など提案パッケージなどもインストール。

 この時点でespeakやopen-jtalkは、端末から利用できる状態になります。

$ espeak "espeak is speaking."

 eSpeakの場合には、端末上でespeakコマンドにダブルクォートでくくったフレーズを渡すと男性風の声でそのフレーズ(デフォルトは米英語)を読み上げてくれます。

$ espeak < text.file

 また、espeakコマンドにテキストファイルなどをリダイレクトするとファイル内容を読み上げてくれます。

$ echo 'Open JTalkだとこんな感じ' | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -r 1.0 -ow test.wav && aplay test.wav

 Open JTalkの場合には、端末上で全て一行でこのようなオプション付きのopen_jtalkコマンドにシングルクォートでくくった単語や文章をechoするなどして渡すと男性風の声で読み上げてくれ、カレントディレクトリにtest.wavという音声データファイルとして保存してくれます。

 単語や一文だけではなく、生成された.wavファイルやテキストファイルなど対応済み各種ファイルをコマンドに渡せば、それを読みあげることもできます。

$ cat text.file | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -r 1.0 -ow test.wav && aplay test.wav

 Open JTalkの場合、例えば、テキストファイルをこんな風に渡すと読み上げてくれます。

meiデータのダウンロードと展開

 meiデータについては、MMDAgent(http://www.mmdagent.jp/)にアクセス、[MMDAgent "Sample Script" version x.x(...)](執筆時点では、1.7(December 25, 2016))の方の[Source code]をクリックしてダウンロード・展開します。

 ここで展開するのは、meiディレクトリ以下だけで十分です。

 展開先は、hts-voice-nitech-jp-atr503-m001の音声データと同じ/usr/share/hts-voice/あたりで、この下にダウンロードしたファイル群の中のmeiディレクトリをコピーするなりして置いておくとよいでしょう。

 その後、先のopen_jtalkコマンドで-mオプションの引数にmeiデータの.htsvoiceファイルパスを指定すれば、女性風(meiさん)の声で読み上げてくれるようになります。

スクリプト

 オプション指定すると、特にOpen JTalkでは、コマンドが長くなりがちなのでスクリプトにしておくとよいでしょう。

$ sh speech_synthesis_script < speech_file
$ chmod u+x speech_synthesis_script
$ ./speech_synthesis_script < speech_file

 そうすると、このようにすることでファイル内の文章を読み上げてくれます。

備考

 テキスト読み上げは、text to speech、音声認識は、speech to textと呼ばれることもあるようです。

 それにしても、こんなに簡単に文章を読み上げてくれるようになるなんて遅ればせながら、技術の進歩の著しさに感動を覚えました。

 感動ついでに、もしやと思い、調べたところ、Arduinoとスピーカー(や圧電ブザー)でも音声合成・発声できることがわかりました。

関連リンク

ウェブ造ホーム前へ次へ