Pythonで音声読み上げができないだろうかと思っていたら、
pyttsx3を使えば、たった3行で実装できるらしい。
それを使って寿限無を読ませてみました!
pyttsx3とは
pyttsx3はテキスト読み上げ変換ライブラリです。
py = python
tts = text to speech
x3 = wakaranai
https://pypi.org/project/pyttsx3/
音声読み上げ機能の実装
まずは3行で実装してみます!
手順も簡単です。
pyttsx3のインストール
次のコマンドでpyttsx3をインストールします。
pip install 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 am speaking 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 am speaking 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でもっと楽しめそうですね!
最後まで読んでいただき、ありがとうございます!