Windows TTS (pyttsx3) のインストールと使用方法
Windows TTSとは
Windowsには、文章を音声として読み上げる Text-to-Speech (TTS) 機能が標準で用意されています。
Pythonの pyttsx3 ライブラリを使用すると、WindowsにインストールされているTTS音声をPythonプログラムから利用できます。
ニューラルネットワークを使用するQwen3-TTSやIrodori-TTSと比較すると非常に軽量で、GPUも必要ありません。
基本的な処理は、
文章
↓
pyttsx3
↓
Windows TTS
↓
音声
となります。
pyttsx3のインストール
Pythonがインストールされている環境で、
pip install pyttsx3
を実行します。
tktts_pyttsx3.py を使用する場合は、共通ライブラリ
tktts_base.py
もPythonからimportできる場所に置いてください。
例えば、
sample_pyttsx3.py
tktts_pyttsx3.py
tktts_base.py
を同じディレクトリに置きます。
WindowsへのTTS音声の追加
pyttsx3 自身が日本語や英語の音声を持っているわけではありません。
pyttsx3 は、WindowsにインストールされているTTS音声をPythonから利用するためのライブラリです。
したがって、利用できる言語や話者はWindows側にインストールされている音声によって決まります。
Windowsの 設定 → 時刻と言語 → 言語と地域 などから言語や音声を追加できます。
例えば、日本語だけでなく、
英語(米国)
英語(英国)
中国語
韓国語
などの言語と、その言語に対応するTTS音声をWindowsにインストールすると、Pythonからそれらの音声を選択して、それぞれの言語を読み上げることができます。
つまり、
pyttsx3に各言語を追加する
のではなく、
Windowsに各言語のTTS音声を追加する
↓
pyttsx3からその音声を利用する
という仕組みです。
例えば、Windowsに日本語と英語のTTS音声がインストールされていれば、
日本語文章 → 日本語TTS音声
英語文章 → 英語TTS音声
のように使い分けることができます。
同様に、中国語や韓国語などのTTS音声をWindowsに追加すれば、それらの言語の読み上げにも利用できます。
利用できる音声を確認する
WindowsにインストールされているTTS音声は、
python sample_pyttsx3.py list
で確認できます。
例えば、
=== 利用可能な pyttsx3 voices ===
Name: Microsoft Haruka Desktop, ...
Name: Microsoft Zira Desktop, ...
...
のように表示されます。
表示される音声はWindowsの環境によって異なります。
サンプルプログラム
次のプログラムを sample_pyttsx3.py として保存します。
# sample_pyttsx3.py
#
# Windows TTS (pyttsx3) の簡単な使用例
#
# 使用例:
# python sample_pyttsx3.py
# python sample_pyttsx3.py list
# python sample_pyttsx3.py Haruka
import sys
import tktts_pyttsx3
# 利用可能な音声を表示
if len(sys.argv) >= 2 and sys.argv[1].lower() == "list":
tktts_pyttsx3.list_available_voices()
sys.exit()
# 音声を指定
if len(sys.argv) >= 2:
voice = sys.argv[1]
else:
voice = "Haruka"
# 読み上げる文章
text = """
こんにちは。
これはWindowsの音声合成機能を使ったサンプルです。
Pythonから簡単に文章を読み上げることができます。
"""
# 音声を生成
tktts_pyttsx3.speak(
outfile="sample_pyttsx3.wav",
text=text,
voice=voice,
speak_rate=150,
)
print("sample_pyttsx3.wav を作成しました。")
音声一覧の表示
次のように実行します。
python sample_pyttsx3.py list
Windowsにインストールされている音声の名前、言語、IDが表示されます。
その中から使用したい音声を選びます。
日本語を読み上げる
例えば、音声一覧に Haruka が表示されている場合は、
python sample_pyttsx3.py Haruka
とします。
プログラムでは、
voice = "Haruka"
が tktts_pyttsx3.speak() に渡されます。
tktts_pyttsx3.py はWindowsに登録されている音声名を検索して、一致する音声を使用します。
他の言語を読み上げる
Windowsに他の言語のTTS音声をインストールしておけば、同じプログラムで他の言語も読み上げられます。
例えば英語音声がインストールされている場合、まず、
python sample_pyttsx3.py list
で英語の音声名を確認します。
その音声を指定して、
text = """
Hello.
This is a text-to-speech example using Windows TTS.
Python can use the voices installed in Windows.
"""
のような英語文章を読み上げます。
中国語の場合は、
text = """
你好。
这是使用Windows语音合成功能的示例。
"""
韓国語の場合は、
text = """
안녕하세요.
이것은 Windows 음성 합성 기능을 사용한 예입니다.
"""
のように、読み上げる文章と対応するTTS音声を組み合わせます。
文章の言語に適したTTS音声を選択することが重要です。
日本語音声に英語や中国語を与えても、正しい発音になるとは限りません。
読み上げ速度
tktts_pyttsx3.speak() では、
speak_rate=150
で読み上げ速度を指定できます。
例えば、
tktts_pyttsx3.speak(
outfile="sample.wav",
text="これは音声合成のテストです。",
voice="Haruka",
speak_rate=120,
)
とすると、比較的ゆっくり読み上げます。
大きな値を指定すると速く、小さな値を指定すると遅くなります。
音声ファイルを作らず直接読み上げる
outfile にファイル名を指定するとWAVファイルを作成します。
tktts_pyttsx3.speak(
outfile="sample.wav",
text="これは音声合成のテストです。",
voice="Haruka",
speak_rate=150,
)
一方、
outfile=None
とすると、音声ファイルを保存せず、スピーカーから直接読み上げることもできます。
tktts_pyttsx3.speak(
outfile=None,
text="これは音声合成のテストです。",
voice="Haruka",
speak_rate=150,
)