バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はPythonとCOEIROINKのAPIを連携してスクリプトから音声合成してみたので、それについての記事です。
やりたいこと:PythonスクリプトからCOEIROINKにアクセスし、指定したテキストを音声にして再生してみる
COEIROINKはAPI経由でアクセスできるみたいで、スクリプトから動作させられるっぽい。
最終的に音声入力したテキストを自動でコピペし、ほぼリアルタイムで音声合成できるようにしてみたいですね…。
他の人が同じような感じでやってるのを前にも見たことがあるし、たぶんできると思うのでやってみます。
ChatGPT氏に聞いてみる
とりあえず優秀なChatGPT氏に聞いてみます。


COEIROINKをAPI経由でPythonで動かしてみたいです。しかしPythonはローカルに環境を構築する必要があると思いますが、やったことがありません。詳しい手順を教えてください。

了解しました!初めてのローカルPython環境構築ですね。COEIROINKの音声を活用するために必要な作業を、以下に 丁寧にステップごとで説明します。
✅ ローカルでCOEIROINKをPythonから使うための流れ
🧰【ステップ1】Pythonのインストール(Windowsの場合)
- 公式サイト にアクセス
- 「Download Python 3.x.x」ボタンをクリックしてインストーラーをダウンロード
- インストーラーを実行して、必ず以下をチェック
✅ 「Add Python to PATH」にチェックを入れる(最重要) - 「Install Now」をクリックしてインストール
📦【ステップ2】必要なライブラリのインストール
- デスクトップや好きな場所にフォルダを作成(例:「coeiroink_test」)
- その中に
main.py
という名前でPythonファイルを作成 - Windowsのコマンドプロンプトを開いて:
pip install requests
これで、COEIROINK APIとやり取りするためのライブラリが使えるようになります。
🗣【ステップ3】COEIROINKエンジンを起動する
- COEIROINK公式ページ にアクセス
- 「COEIROINK エンジン(Windows)」をダウンロード
- 解凍して
run.exe
(またはcoeiroink-engine.exe
)を実行 - 正常に起動すれば、ブラウザで
http://localhost:50032/
が開く(バージョン依存)
🧪【ステップ4】Pythonスクリプトを作成して音声再生
import requests
import json
COEIROINK_URL = "http://localhost:50032/v1/synthesis"
SPEAKER_UUID = "3c37646f-3881-5374-2a83-149267990abc" # つくよみちゃん冷静
TEXT = "今日はいい天気ですね"
payload = {
"volumeScale": 1,
"pitchScale": 0,
"intonationScale": 1,
"prePhonemeLength": 0,
"postPhonemeLength": 0,
"outputSamplingRate": 44100,
"sampledIntervalValue": 0,
"adjustedF0": [],
"processingAlgorithm": "coeiroink",
"startTrimBuffer": 0,
"endTrimBuffer": 0,
"speakerUuid": SPEAKER_UUID,
"styleId": 0,
"text": TEXT,
"prosodyDetail": [],
"speedScale": 1
}
headers = {
"accept": "audio/wav",
"Content-Type": "application/json"
}
response = requests.post(
COEIROINK_URL,
headers=headers,
data=json.dumps(payload)
)
# 確認用:レスポンスサイズ
print(f"Response size: {len(response.content)} bytes")
# 保存
with open("output.wav", "wb") as f:
f.write(response.content)
🔍【ステップ5】話者UUID(speaker_uuid)の確認
import requests
speakers = requests.get("http://localhost:50032/v1/speakers").json()
for sp in speakers:
print(f"{sp['name']} : {sp['speaker_uuid']}")
例:
ツルギ : 7a8e8d6e-f79b-4d5a-b35b-XXXXXXX
🎉 これで完了!
- 一度セットアップすれば、今後はテキストを変えるだけで音声が合成できます。
- あとから「Googleドキュメントで音声入力→テキスト→COEIROINKへ渡す」自動化も可能です。
割と簡単にできそう?
結構色々な制御に使えそうだから覚えておくと面白いかもしれない。
公式のAPIリクエスト例など
こちらの公式ページで作者さんがAPIリクエストの例を掲載してくれています。
しかしこれコードをコマンドプロンプトにコピペしたら「複数行はダメです」と警告が出ましたΣ(゚Д゚)
ChatGPTに聞いたら1行にすると良いっぽくて、COEIROINKを起動しながら↓のコードをコマンドプロンプトにコピペしたら正常に動いた。
curl -X POST "http://localhost:50032/v1/synthesis" -H "accept: audio/wav" -H "Content-Type: application/json" -d "{\"volumeScale\":1,\"pitchScale\":0,\"intonationScale\":1,\"prePhonemeLength\":0,\"postPhonemeLength\":0,\"outputSamplingRate\":44100,\"sampledIntervalValue\":0,\"adjustedF0\":[],\"processingAlgorithm\":\"coeiroink\",\"startTrimBuffer\":0,\"endTrimBuffer\":0,\"speakerUuid\":\"3c37646f-3881-5374-2a83-149267990abc\",\"styleId\":0,\"text\":\"今日はいい天気ですね\",\"prosodyDetail\":[],\"speedScale\":1}" -o output.wav
ファイルはユーザーフォルダに生成されていて正常に再生できました。

これで動くんだからPythonでも動くでしょう。
実際にやってみる
PythonはGoogle Colabでちょっといじったことがある程度だけど、ChatGPT氏の言うとおりにやってみます。
Pythonのインストール
↓からPythonをダウンロードする。



↓インストーラーを起動して、Add Pythonなんとかにチェックを入れてインストールすればOK。
必要なライブラリのインストール
コマンドプロンプトを開いてコマンドを入れればインストールできます。
pip install requests
COEIROINKにAPIでアクセスして動かす
デスクトップにcoeiroink_testっていうフォルダを作って、メモ帳でmain.pyを作りました。


↓のスクリプトをmain.pyに入れて保存する。
import requests
import json
COEIROINK_URL = "http://localhost:50032/v1/synthesis"
SPEAKER_UUID = "3c37646f-3881-5374-2a83-149267990abc" # つくよみちゃん冷静
TEXT = "今日はいい天気ですね。"
payload = {
"volumeScale": 1,
"pitchScale": 0,
"intonationScale": 1,
"prePhonemeLength": 0,
"postPhonemeLength": 0,
"outputSamplingRate": 44100,
"sampledIntervalValue": 0,
"adjustedF0": [],
"processingAlgorithm": "coeiroink",
"startTrimBuffer": 0,
"endTrimBuffer": 0,
"speakerUuid": SPEAKER_UUID,
"styleId": 0,
"text": TEXT,
"prosodyDetail": [],
"speedScale": 1
}
headers = {
"accept": "audio/wav",
"Content-Type": "application/json"
}
response = requests.post(
COEIROINK_URL,
headers=headers,
data=json.dumps(payload)
)
# 確認用:レスポンスサイズ
print(f"Response size: {len(response.content)} bytes")
# 保存
with open("output.wav", "wb") as f:
f.write(response.content)
COEIROINKを起動し、main.pyを実行するとwavファイルが生成されます!
ちゃんと生成できた
できたファイルが↓です。ちゃんと生成されていますね。
しかしWindowsの動画プレーヤーで再生したら「今日はいい天気ですn」と、「ね」を言い切る前に再生が停止してしまった。
まぁプレーヤーにもよるかもしれない。
wavファイルを生成せず読み上げだけさせる方法もあるっぽい
上記の手順だとwavファイルが生成されてしまうため、リアルタイムで再生させるには自動でプレーヤーを起動しないといけない。
wavを生成させず、COEIROINK内で音声をプレビュー再生だけさせられないかな?とChatGPT氏に聞いてみたけどダメっぽい。


しかしwavを作らずにメモリ上で再生だけさせる方法があるっぽい。
これができればテキスト部分を音声入力したやつに変えるだけで、ほぼリアルタイムでできるかな…。


でもちょっと長くなりそうなので続くw
追記:生成したwavファイルを自動で再生するスクリプト
最後に一行足すだけだけど一応載せておきます。
import os
import requests
import json
COEIROINK_URL = "http://localhost:50032/v1/synthesis"
SPEAKER_UUID = "3c37646f-3881-5374-2a83-149267990abc" # つくよみちゃん冷静
TEXT = "今日はいい天気ですね。"
payload = {
"volumeScale": 1,
"pitchScale": 0,
"intonationScale": 1,
"prePhonemeLength": 0,
"postPhonemeLength": 0,
"outputSamplingRate": 44100,
"sampledIntervalValue": 0,
"adjustedF0": [],
"processingAlgorithm": "coeiroink",
"startTrimBuffer": 0,
"endTrimBuffer": 0,
"speakerUuid": SPEAKER_UUID,
"styleId": 0,
"text": TEXT,
"prosodyDetail": [],
"speedScale": 1
}
headers = {
"accept": "audio/wav",
"Content-Type": "application/json"
}
response = requests.post(
COEIROINK_URL,
headers=headers,
data=json.dumps(payload)
)
# 確認用:レスポンスサイズ
print(f"Response size: {len(response.content)} bytes")
# 保存
file_path = "output.wav"
with open(file_path, "wb") as f:
f.write(response.content)
# 自動再生(Windows標準プレーヤー)
os.system(f'start {file_path}')
これで実行するだけでwav生成、自動でプレーヤー再生されます。
まぁこの方式でも音声入力テキストをリアルタイムで監視しといて再生すれば行けるかな…。
ボイスチェンジャーじゃないから多少タイムラグがあるのは仕方ないけども。
つづく
COEIROINKのAPIをいじるのは初めてだったけど、案外簡単にスクリプトでいじれて良かった。
まぁChatGPT氏に聞きながらやれば大抵はできるかな(^_^;)
うまく動かせたら追記します(*^_^*)