【Python】音声合成ライブラリのPyttsx3を使ってサクッと文章から音声生成


投稿日 2022年11月24日 >> 更新日 2023年2月28日

概要

「python 音声合成」と検索をして、幾つかの音声合成ライブラリがありましたが、最も簡単に実装できた「Pyttsx3」を使って文章から音声を生成していきます。
環境はスピーカー機能を拾ってこれるWindows10コマンドプロンプトとなります。

実行環境&使用ライブラリ

実行環境
Windows10
Python 3.10.0
pip 23.0.1
使用ライブラリ ライセンス
pyttsx3==2.90 GNU General Public License v3 (GPLv3)
C:\>pip install --upgrade pip

C:\>pip install pyttsx3

文章から音声を生成する

上記公式サイドの説明を見れば一目瞭然ですが、以下のようにすることで簡単な音声合成実行ファイルが出来上がります。

# voice.py

import pyttsx3

# 初期化オブジェクト
engine = pyttsx3.init()
# メソッドの引数にテキストを設定
engine.say('The quick brown fox jumped over the lazy dog.')
# 実行
engine.runAndWait()

Pythonスクリプトを実行するだけです。

C:\>python voice.py

音声は男性と女性の2種類から選べると公式サイドではありますが、実際使用できたのでは、「機械的な女性の声」と「滑らかな女性の声」でした。

ただし日本語に対応している音声は機械的な女性の声だったので、デフォルトのままが無難でしょう。

以下は「滑らかな女性の声」を指定した音声合成です。

※英語のみ音声が生成される

# voice.py

import pyttsx3

# 初期化オブジェクト
engine = pyttsx3.init()

#音声リストの取得
voices = engine.getProperty('voices')
# 音声リスト1番目を指定してそのIDを設定
engine.setProperty('voice', voices[1].id)

# メソッドの引数にテキストを設定
engine.say('The quick brown fox jumped over the lazy dog.')
# 実行
engine.runAndWait()

音声のスピード・音量・音声の選択を取り入れた実装を最後に実行しました。
音量に関しては設定値が固定されてしまっているようで調節できませんでしたが、一応記述しておきます。

# voice.py

import pyttsx3

# 初期化
engine = pyttsx3.init()

# 音声のスピード調整
rate = engine.getProperty('rate')
print('デフォルトの音声スピード: {}'.format(rate))
engine.setProperty('rate', 25)

# 音量調整
engine.setProperty('volume', 2.0) # デフォルトは1.0
volume = engine.getProperty('volume')
print('現在のボリューム: {}'.format(volume))

# 音声を「滑らかな女性」の方に設定
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)

while True:
    input_text = input('入力: ')
    engine.say(input_text)
    if input_text == 'quit':
        engine.runAndWait()
        break
    else:
        engine.runAndWait()

実行

C:\>python voice.py
デフォルトの音声スピード: 200
現在のボリューム: 1.0
入力: who are you

それでは以上となります。

最後までご覧いただきありがとうございました。