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,
)