Text to Speech テキスト読み上げ
2020.03.18 / 2022.02.05更新
YouTubeでポイントを説明しています。画像をクリックすると再生できます。
今回はテキストの音声読上げ、Text to Speech を行います。
読み上げには、MITライセンスの gTTS (Google Text to Speech)を利用します。
試験環境としては、Raspberry Pi Zero W、ディストリビューションに Raspbian Stretch を使用しています。
■gTTs (Google Text To Speak) のインストール
$ sudo pip3 install gTTS
テキストから音声に変換されたデータは、mp3ファイルとして保存し、メディアプレーヤーにて再生しますので、メディアプレーヤーもインストールします。
■mplayer のインストール
MPlayer(エムプレーヤー)は、オープンソースのメディアプレーヤーです。
参考→I2S通信によるハイレゾ音源再生
$ apt-cache search mplayer | grep mplayer
....
mplayer - movie player for Unix-like systems
....
$ apt-cache show mplayer | more
Package: mplayer
Version: 2:1.3.0-6
Architecture: armhf
......
$ sudo apt-get install mplayer
それでは、外務省の海外向け英語ツイートを音声に変換してみましょう。

$ vi gTTS_en.py
import os
from gtts import gTTS
english='Japan\'s Health Ministry updated its Q&A page. You can find answers to such questions as how you can avoid catching/spreading the virus, what is the "cough etiquette". '
tts = gTTS(english, lang='en')
tts.save("english.mp3")
os.system("mplayer english.mp3")
$ python3 gTTS_en.py
次は、外務省の国内向け日本語ツイートを音声に変換してみましょう。

$ vi gTTS_ja.py
import os
from gtts import gTTS
japanese='日仏首脳電話会談。3月13日,午後6時10分から約30分間,安倍晋三内閣総理大臣は,エマニュエル・マクロン・フランス共和国大統領と日仏首脳電話会談を行いました。'
tts = gTTS(japanese, lang='ja')
tts.save("japanese.mp3")
os.system("mplayer -speed 1.4 -af scaletempo japanese.mp3")
ゆっくり話すようにしたい場合は、
tts = gtts.gTTS(text=english, lang='en', slow=True)
のように指定できます。
日本語テキストから変換された音声は、逆にゆっくりしていて、これを早くする指定は gTTS にはありません。
そこで、メディアプレーヤー側で話す速度を変更しています。
mplayer のオプション設定
-speed xx 再生速度の倍率を指定します 0.01?100
-af scaletempo 音の高低を変えずに再生速度のみを変える
$ python3 gTTS_ja.py
ここで、英語で読み上げた後に、英語テキストを日本語に自動翻訳させて、日本語読み上げをさせることを考えてみます。
翻訳用のpythonパッケージをインストールします。
■py-translator
$ sudo pip3 install py_translator
...
Successfully installed Unidecode-1.1.1 beautifulsoup4-4.6.3 idna-2.8 langdetect-1.0.7 lxml-4.2.5 py-translator-2.1.9 python-slugify-1.2.6 requests-2.21.0 urllib3-1.24.3
$ pip3 show py_translator
Name: py-translator
Version: 2.1.9
....
$ python3
>>> from py_translator import Translator
>>> s = Translator().translate(text='Hello World', dest='ja').text
>>> print(s)
こんにちは世界
では、さらに先ほどの外務省の英語ツイートを翻訳してみます。
>>> english='Japan\'s Health Ministry updated its Q&A page. You can find answers to such questions as how you can avoid catching/spreading the virus, what is the "cough etiquette". '
>>> s = Translator().translate(text=english, dest='ja').text
>>> print(s)
日本の保健省はそのQ&Aページを更新しました。あなたは/キャッチウイルスを拡散を避けることができる方法などの質問に対する答えを見つ けることができ、「咳エチケット」ものです。
>>> ctrl+[D]
現段階での、実装は難しいかもしれません。
ここからは、音声合成をもうちょっと深堀りしたい方向けです。
■日本語音声読み上げ Open JTalk
Open JTalkは、名古屋工業大学を中心に開発されたオープンソースのソフトウェアです。
フリーソフトですが商用利用もできます。
パッケージの検索
$ apt-cache search open-jtalk
open-jtalk - Japanese text-to-speech system
open-jtalk-mecab-naist-jdic - NAIST Japanese Dictionary for Open JTalk
インストール
$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic
男性ボイス: nitech_jp_atr503_m001.htsvoice
$ sudo apt-get install hts-voice-nitech-jp-atr503-m001
$ sudo find / -name nitech_jp_atr503_m001.htsvoice -print
/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
女性ボイス: mei_normal.htsvoice
MMDAgentという別プロジェクトから、メイちゃん音響モデル(Voiceデータ)を流用します。
$ wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.8/MMDAgent_Example-1.8.zip
$ unzip MMDAgent_Example-1.8.zip MMDAgent_Example-1.8/Voice/*
Archive: MMDAgent_Example-1.8.zip
creating: MMDAgent_Example-1.8/Voice/
creating: MMDAgent_Example-1.8/Voice/mei/
inflating: MMDAgent_Example-1.8/Voice/mei/COPYRIGHT.txt
inflating: MMDAgent_Example-1.8/Voice/mei/mei_angry.htsvoice
inflating: MMDAgent_Example-1.8/Voice/mei/mei_bashful.htsvoice
inflating: MMDAgent_Example-1.8/Voice/mei/mei_happy.htsvoice
inflating: MMDAgent_Example-1.8/Voice/mei/mei_normal.htsvoice
inflating: MMDAgent_Example-1.8/Voice/mei/mei_sad.htsvoice
$ sudo cp -r MMDAgent_Example-1.8/Voice/mei/ /usr/share/hts-voice
$ ls /usr/share/hts-voice
mei nitech-jp-atr503-m001
OpenJtalkのパラメータ
| Option | Items | Range | Default |
| -x | 辞書の指定 | | |
| -m | 音声データの指定 | | |
| -ow | WAVファイルの指定 | | |
| -ot | ログファイルの指定 | | |
| -a | 声質 | -0.8~0.8 | 0.55 |
| -r | 話速 | 0.5~2.0 | 1.0 |
| -fm | 音程 | -24~24 | 0.0 |
| -jf | 抑揚 | | 1.0 |
| -jm | 波形増幅? | 0.0~ | 1.0 |
| | 合成テキスト | 最大200字 | |
Open JTalk に日本語テキストを渡し、音声ファイルを生成します。
$ echo 日仏首脳電話会談。3月13日,午後6時10分から約30分間,安倍晋三内閣総理大臣は,エマニュエル・マクロン・フランス共和国大統領と日仏首脳電話会談を行いました。 | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -r 1.0 -ow japanese.wav
再生します。
$ mplayer japanese.wav
声質、話速、音程、抑揚、波形増幅 のパラメータを変更して試してみてください。
■音響モデル(Voiceデータ)のカスタマイズ
OpenJTalk は自分の声を音響モデルにすることも可能です。
詳細は下記のサイトで詳しく説明しているので参考にしてみてください。
・HTS-demoによる自作音響モデルの作り方 その1
・HTS-demoによる自作音響モデルの作り方 その2
【参考文献】
・Raspberry Pi + Speaker pHat で京急の運行情報を喋らせてみる
・py-translator を使ってみる
・HMM-based Text-to-Speech System Open JTalk Demonstration Page
・OpenJTalk + python で日本語テキストを発話
・HTS VOICE
・萌え声を探せ!Open JTalkのパラメータをいろいろ変化させてみた!
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」
「一念発起して何かを始めても、いつも三日坊主で終わってしまう」
「色んなことを先延ばしにしたまま、時間だけが過ぎていく」
そこで本書では、そんな著者が独自に開発した、
まったく新しい目標達成メソッド「100日デザイン」について、
その知識と技術を、余すところなくご紹介します。
まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。
ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。
今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。
ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。
29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!
【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。
基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説!
500以上のサンプルを掲載。実行結果も確認。
全24章の包括的なチュートリアル。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。
Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード
電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)
|