// // //

Pythonで日本語を音声認識をして音声をテキスト化し、それを音声合成して発音する方法簡単解説【オウム返し by Mac その2:音声合成編】(2020年12月:pyttsx3 インストールエラー解消済み)

speech_synthesis_00 Programming
speech_synthesis_00
この記事は約5分で読めます。

一つ前の記事では、MacでPythonを使って日本語の音声認識の方法を説明しました。今回はその続きとして、音声合成、つまりテキストデータをもとに、音声での発音のさせ方を説明していきます。

ライブラリにはpyttsx3を使用しました。日本語の音声合成ライブラリとしては名古屋工業大学さんのOpenJtalkが有名ですが、日本語にしか対応していないこと、更新が2018年7月以降されていないようであることなどを理由に、今回は使用を控えました。

また、古い記事の中にはpytttsxを使用して説明している記事がありますが、pyttsx3を使用してくださいね。

この記事を読んで、できるようになる事

speech_synthesis_03
speech_synthesis_03

Mac上のPythonにて、ライブラリpyttsx3を用いて、オフライン環境で日本語のテキストデータを音声に変換して発音させることが出来ます。また、英語をはじめとして多言語にも対応していますので、パラメータの変更により、多言語に対応できます。

また、前記事の【オウム返し by Mac その1:音声認識編】と合わせて読んでいただくことにより、Macに日本語の音声で話しかけ、それを認識させてテキストデータ化させ、そのデータを音声合成により発音させてインプットできるようになります。

もちろんこれだけでは、ほとんど何の意味のないコードですが、みなさんが作られているアプリのインターファイスとして使っていただけます。

また、興味を持って、機械学習やプログラミングに始めたばかりの方には、コンピュータを使って自分ができる実装の一例として経験していただければと思います。

環境設定

speech_synthesis_02
speech_synthesis_02

ぼくの環境は以下の通りです。

  • OS : MacOS Mojave 10.14.6
  • Python : version 3.6.5
  • Hardware : MacBook Pro 2016
  • IDE : Jupyter Lab

近くに適当なWindowsのコンピュータがないので、確認はしていませんが、Windowsでもこれから説明するコードは動くはずです。

音声合成

speech_synthesis_05
speech_synthesis_05

概要説明

今回使用する音声合成のためのライブラリ”pyttsx3"は以前の記事で解説しました"speech_recognition"と異なり、オフラインで使用できます。

この"pyttsx3"の本家サイトへのリンクを以下に貼っておきます。英文ですが、興味のある方は参考にしてみてください。

pyttsx3 - Text-to-speech x-platform — pyttsx3 2.6 documentation

実装

それでは実際に実装していきます。

それでは、前回の記事と同じようにJupyter Labを開いて上記のコードを打っていきます。
上記のコードによりpyttsx3をインストールします。MacのターミナルやWindowsのコマンドプロンプトから入力する場合は!pipの"!"を省略してください。
また、一行目の"#"から始めるコードはコメントといって注意書きで実際にコンピュータは実行しません。Pythonでは"#"を使うとその行の行末までが、コメントになります。

2020年12月14日追記:


pyttsxのバージョン2.9と2.8にはどうやらバグがあるようで、場合によっては上記の方法では、エラーを吐き、インストールできない場合があるようです。

インストール中に上記のエラーが出た場合は、以下のコマンドを実行してバージョン2.7をインストールしてください。

追記終わり。


上記のコードで、変数textに代入した日本語「こんにちは」を発音します。また、声の性質はここのパラメーターで細かく設定できるのですが、ここでは、voicesに登録された声の性質の19番目(7行目に18とある番号でこの性質が呼び出されます。一番目の声の性質の番号が”0”であるため、18は19番目になります。)を使っています。
また、もちろん「こんにちは」を別の日本語の文字列に変換しても、正しく発音してくれます。

興味のある方は、変数textに英語の文字列を代入して、(日本語のテキストデータを発音できる声の性質が少ない為)7行目の番号を色々と変えてコードを実行して色々の声の性質を試してみてください。

音声認識 + 音声合成 = オウム返し

それでは、前回の記事で解説した音声認識のコードと今回開設した音声合成のコードを合体させて、オウム返しのコードを作ります。

上記のコードで、音声により入力された日本語のデータが音声認識によりテキストデータに変換され、それを音声合成により音声に戻して、日本語として発音しています。

前回の音声認識のコードと同様に、「終わりだよ」という入力を認識すると、ループを抜き出て処理を終えます。

まとめ

sppech_synthesis_04
sppech_synthesis_04

これで、音声合成の記事は終わりです。前回の音声認識の記事と合わせて、オウム返しのコードが完成しました。

いかがだったでしょうか。思いの外、簡単だったのではないかと思います。20年前にこれと同じことをコンピュータにさせるようと思うと、かなり大掛かりな段取りが必要だったように思います。

それでは最後まで、お付き合いありがとうございました。今回はここまでにいたします。さようなら。

参照資料

本記事の制作のために、以下の資料を参考にしていただきました。

コメント