juliusを使って音声認識が動くのは確認できました。
PythonでJuliusを動かして音声認識システム作ってみた! - アルの備忘録www.matematetea.com
次はPythonで音声読み上げができないだろうかと思っていたら、
pyttsx3を使えば、たった3行で実装できるらしい。
それを使って寿限無を読ませてみました!
pyttsx3とは
pyttsx3はテキスト読み上げ変換ライブラリです。
py = python
tts = text to speech
x3 = wakaranai
音声読み上げ機能の実装
まずは3行で実装してみます!
手順も簡単です。
pyttsx3のインストール
次のコマンドでpyttsx3をインストールします。
pyttsx3の実装
3行といっていますが、importは3行に含めていないです。。。
import pyttsx3 engine = pyttsx3.init() engine.say("音声読み上げライブラリ") engine.runAndWait()
これで動かしてみると「音声読み上げライブラリ」と読み上げてくれます!
けっこういいですね!
英語を読み上げる場合
日本語だけでなく、英語でもテキストを読み上げてくれるらしいので試してみます。
import pyttsx3 engine = pyttsx3.init() # ここで英語を指定する voices = engine.getProperty('voices') engine.setProperty("voice", voices[1].id) engine.say("I will speak this text") engine.runAndWait()
日本語でもそうですが、超早口ですね。
速度の調整
次はテキストを読み上げる速度を調整してみます。
import pyttsx3 engine = pyttsx3.init() voices = engine.getProperty('voices') engine.setProperty("voice", voices[1].id) # ここで速度を調整する rate = engine.getProperty('rate') engine.setProperty('rate', rate-50) engine.say("I will speak this text") engine.runAndWait()
だいぶゆっくりになりましたね。これくらいがちょうどいいかも。
音声ファイルの保存
読み上げてくれた音声を録音することができます。
ファイル名を指定してmp3で同階層に保存されます。
import pyttsx3 engine = pyttsx3.init() voices = engine.getProperty('voices') engine.setProperty("voice", voices[1].id) rate = engine.getProperty('rate') engine.setProperty('rate', rate-50) # english.mp3というファイル名を指定して録音する engine.save_to_file("I will speak this text", 'english.mp3') engine.say("I will speak this text") engine.runAndWait()
寿限無を読ませてみる
短い単語よりも長い文章を読ませてみたい!
そこで寿限無の一節を読ませてみました。テキストはこちら。
和尚の書いてくれた紙を熊さんは読み上げる。「ええー、寿限無寿限無、五劫のすり切れ、海砂利水魚の水行末、雲来末、風来末、食う寝るところに住むところ、やぶらこうじのぶらこうじ、パイポパイポ、パイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナの長久命の長助、うーん、こう並べてみるとみんなつけてえ名前ばかりですねえ」
# -*- coding: UTF-8 -*- import pyttsx3 engine = pyttsx3.init() rate = engine.getProperty('rate') engine.setProperty('rate', rate-50) text = "和尚の書いてくれた紙を熊さんは読み上げる。「ええー、寿限無寿限無、五劫のすり切れ、海砂利水魚の水行末、雲来末、風来末、食う寝るところに住むところ、やぶらこうじのぶらこうじ、パイポパイポ、パイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナの長久命の長助、うーん、こう並べてみるとみんなつけてえ名前ばかりですねえ」" engine.say(text) engine.runAndWait()
いざ実行!!!
・
・
・
いい感じに機会が読み上げてくれました。
実行してみて面白いのが、漢字の読み方。
「寿限無」 は 「ことぶきかぎりむ」
「海砂利水魚」 は 「みじゃりすいぎょ」
「雲来末」 は 「くもくまつ」
「風来末」 は 「かぜらいまつ」
特に漢字の読み間違いは辞書データなどを作成して精度高くできないのだろか
pyttsx3でもっと楽しめそうですね!
最後まで読んでいただき、ありがとうございます!