わたしの家では、ラズパイが声で知らせてくれます。「メルカリで、商品が売れました。」「データベースの、バックアップに失敗しました。」といった声です。この声は、無料の読み上げソフト VOICEVOX(ボイスボックス)を使って、PC で作っています。
この記事では、声を作るところだけを紹介します。VOICEVOX をインストールして声を選び、1 行のコマンドで、メッセージを WAV のファイルにします。できたファイルは、ラズパイでもスマホでも、どこでも鳴らせます。
この記事の前にできていること
- Windows の PC(Mac・Linux でも VOICEVOX は動きます。この記事のコマンドは Windows で試しました)
- PC に Python が入っている(python.org からインストール。この記事では 3.14 で試しました)
ラズパイは、最後の「ラズパイで鳴らす」で使います。ラズパイのシリーズを読んでいなくても、声を作るところまでは進められます。
この記事でできるようになること
- VOICEVOX をインストールして、使う声(話者)を選ぶ
- 「python make_voice.py 126 ファイル.wav “メッセージ”」の 1 行で、メッセージを WAV にする
- 作った WAV をラズパイに送って鳴らす
できあがる声の例です(里石ユカ(つぼみ)の声・約 3 秒)。
VOICEVOX とは
VOICEVOX は、文章を打つと、キャラクターの声で読み上げてくれる無料のソフトです。Windows・Mac・Linux で動き、商用でも使えます。声は、ずんだもん・四国めたん・春日部つむぎなど、たくさんのキャラクターから選べます。

画面で文章を打って読ませるのがふつうの使い方ですが、VOICEVOX は、起動しているあいだ、ほかのプログラムから声を頼める窓口(音声合成エンジン)も PC の中に開きます。この記事では、この窓口を Python から呼んで、声を自動で作ります。
先に:クレジットの書き方
VOICEVOX で作った声を使うときは、VOICEVOX の利用規約と、声のキャラクターごとの利用規約を守ります。多くのキャラクターで、「VOICEVOX:キャラクターの名前」のクレジットを書くことが決まっています。
この記事で使っている里石ユカ(つぼみ)は、「VOICEVOX:里石ユカ(つぼみ)」と書けば、商用・非商用で使えます(公式サイトの里石ユカのページの「里石ユカ 利用規約」)。家の中で鳴らすだけでも、声をブログや動画に載せるときは、必ずクレジットを書きます。

手順 A:VOICEVOX をダウンロードして、インストールする
公式サイトの「ダウンロード」を押すと、OS とパッケージを選ぶ画面が出ます。Windows なら「Windows」「インストーラー」を選んで、下の「ダウンロード」を押します。

ダウンロードしたインストーラーを開いて、画面の案内のとおりに進めます。この記事で試したのは 0.25.2 です(公式サイトのトップの表示は 0.26.2)。インストールが済んだら、VOICEVOX を 1 回起動して、利用規約に同意します。画面で文章を打って、左下の再生のボタンを押し、声が出れば準備はできています。

VOICEVOX の画面(キャラクターの絵とアイコンは、この記事では消しています)
- GPU モードは、起動したあとに選べます。上のメニューの「設定」→「オプション」の「エンジンモード」です。試した PC(Intel Arc A310)では、GPU にすると新しいメッセージのたびに 16 秒ほどかかり、CPU(1〜3 秒)より遅くなりました。通知のような短いメッセージなら、CPU のままで十分です。
- 使い方の詳しい説明は、公式サイトの使い方と Q&A にあります。

手順 B:メッセージを WAV にするスクリプトを置く
PC の好きなフォルダー(例:C:\voice)に、次のファイルを make_voice.py の名前で保存します。文字コードは UTF-8 にします。Python の標準の部品だけで動くので、pip でのインストールは必要ありません。
# -*- coding: utf-8 -*-
# VOICEVOX で、メッセージを WAV のファイルにする(PC で動かす・Python の標準だけ)
# 使い方:VOICEVOX を起動してから
# python make_voice.py 話者の番号 ファイルの名前.wav "読ませるメッセージ"
# python make_voice.py --list … 話者の番号の一覧を出す
import json
import sys
import urllib.parse
import urllib.request
ENGINE = "http://127.0.0.1:50021" # VOICEVOX を起動すると、この PC の中だけで待ち受ける
def call(path, data=None):
req = urllib.request.Request(ENGINE + path, data=data, method="POST" if data is not None else "GET",
headers={"Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=120) as r:
return r.read()
if len(sys.argv) > 1 and sys.argv[1] == "--list":
for sp in json.loads(call("/speakers")):
for st in sp["styles"]:
print(st["id"], sp["name"], st["name"])
sys.exit(0)
speaker, out, text = int(sys.argv[1]), sys.argv[2], sys.argv[3]
q = urllib.parse.urlencode({"text": text, "speaker": speaker})
query = call("/audio_query?" + q, data=b"") # 1. 読み方と高さを決める
wav = call("/synthesis?" + urllib.parse.urlencode({"speaker": speaker}), data=query) # 2. 声にする
with open(out, "wb") as f:
f.write(wav)
print("作りました:", out, len(wav), "バイト")
127.0.0.1:50021:VOICEVOX が起動しているあいだだけ開く窓口です。PC の中からしか呼べないので、外から使われる心配はありません。- 声は 2 回に分けて頼みます:1 回目(
audio_query)で読み方とアクセントを決め、2 回目(synthesis)で声にします。読み方を直したいときは、1 回目の結果を書きかえてから 2 回目に渡せます。 - 窓口の説明は、VOICEVOX を起動した状態で、PC のブラウザーで
http://127.0.0.1:50021/docsを開くと読めます(VOICEVOX ENGINE の GitHub にもあります)。
手順 C:声を選んで、WAV を作る
VOICEVOX を起動したまま、PowerShell で次のコマンドを実行します。まず、話者の番号の一覧を出します。
cd C:\voice
python make_voice.py --list
2 四国めたん ノーマル
3 ずんだもん ノーマル
8 春日部つむぎ ノーマル
126 里石ユカ つぼみ
左の番号が、声を作るときに渡す番号です。同じキャラクターでも、「ノーマル」「あまあま」などの話し方(スタイル)ごとに番号が分かれています。VOICEVOX 0.25.2 では、127 の声がありました。どの声にするかは、VOICEVOX の画面でメッセージを読ませて聞きくらべると決めやすいです。
番号を決めたら、メッセージを WAV にします。
python make_voice.py 126 sitebeacon.wav "サイトビーコンから、お知らせが届きました。"
作りました: sitebeacon.wav 137260 バイト
フォルダーにできた sitebeacon.wav をダブルクリックすると、声が聞けます。
聞き取りやすいメッセージにするコツ
- 「、」を多めに置く:「メルカリで、商品が売れました。」のように区切ると、間が入って聞き取りやすくなります。
- 英語や記号はカタカナにする:「SiteBeacon」より「サイトビーコン」、「DB」より「データベース」のほうが、思ったとおりに読まれます。
- 最初の言葉で「何の知らせか」が分かるようにする:「ラズパイが、」「インターネットが、」のように、主語を先に言います。
手順 D:ラズパイで鳴らす
作った WAV をラズパイに送って、鳴らしてみます。ラズパイにスピーカー(イヤホンの差し口・USB スピーカーなど)を接続しておきます。mypi は、ラズパイのシリーズの第 3 回で決めた SSH の呼び名です。
scp sitebeacon.wav mypi:/tmp/
ssh mypi aplay /tmp/sitebeacon.wav
声が出れば成功です。メールが届いたら鳴らす・夜は鳴らさずに朝まで取っておく、といった「いつ鳴らすか」の仕組みは、売れたメールをラズパイが声で知らせる仕組みで紹介しています。VOICEVOX はラズパイでは重いので、声は PC で前もって作っておき、ラズパイはファイルを鳴らすだけにするのがおすすめです。
試した結果
PC(Core i7-14700・VOICEVOX は CPU モード)で、里石ユカ(つぼみ)の声を作った時間です。
| メッセージ | 作る時間 |
|---|---|
| 「テストです。」(6 文字) | 0.55 秒 |
| 「サイトビーコンから、お知らせが届きました。」(21 文字) | 0.98 秒 |
| 「データベースの、バックアップに失敗しました。調べてください。」(30 文字) | 1.26 秒 |
- 通知のメッセージ 1 つなら、1 秒ほどでできます。できた WAV は 24kHz・モノラルで、3 秒の声で約 130KB でした。
- 知らせの声は 15 個ほど前もって作って、ラズパイに置いています。メッセージを変えたいときは、PC でもう 1 回作って送り直すだけです。
つまずきやすい所
- 「接続が拒否されました」「ConnectionRefusedError」と出る:VOICEVOX が起動していません。VOICEVOX を起動して、画面が出てから、もう一度実行します。
- コマンドプロンプトで、メッセージが文字化けする:PowerShell で実行します。それでも化けるときは、メッセージをスクリプトの中に書きます。
- 1 つのメッセージに 10 秒以上かかる:GPU モードになっていないかを、VOICEVOX の設定で見ます。CPU にすると速くなることがあります。
- ラズパイで音が出ない:
aplay -lで、スピーカーが見えているかを見ます。音の出口の選び方は、売れたメールの記事にあります。
まとめ
VOICEVOX を起動しておけば、1 行のコマンドで、好きなメッセージを声のファイルにできます。声は PC で作って、ラズパイは鳴らすだけにすると、Raspberry Pi 3 のような小さなラズパイでも、すぐに声で知らせられます。次は、サイトの監視サービス(SiteBeacon)のお知らせを、ラズパイに読み上げさせてみます。
この記事の声:VOICEVOX:里石ユカ(つぼみ)