PythonとCOEIROINKのAPIを連携してスクリプトから音声合成してみたメモ。wavファイル作成まで

python coeiroink api 音声作成
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^_^*)

この記事はPythonとCOEIROINKのAPIを連携してスクリプトから音声合成してみたので、それについての記事です。

●PRスペース●
■PR■

現在、TPSシステム系アセットが50%オフで買える Unityパブリッシャーセール をやってるみたいです(2025/09/12 23:59まで)。

Unity パブリッシャーセール 50%オフ

クーポンコード FANTACODESTUDIOS を使うと、↓のロープスイングシステムがタダで貰えます(決済時にクーポンコード入力適用で0円に)。

unity ロープスイングシステム

無料アセットだけでも貰っておくと良いかも。

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

やりたいこと:PythonスクリプトからCOEIROINKにアクセスし、指定したテキストを音声にして再生してみる

COEIROINKはAPI経由でアクセスできるみたいで、スクリプトから動作させられるっぽい。

最終的に音声入力したテキストを自動でコピペし、ほぼリアルタイムで音声合成できるようにしてみたいですね…。

他の人が同じような感じでやってるのを前にも見たことがあるし、たぶんできると思うのでやってみます。

ChatGPT氏に聞いてみる

とりあえず優秀なChatGPT氏に聞いてみます。

python coeiroink api
神部まゆみ
神部まゆみ

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

ChatGPT
ChatGPT

了解しました!初めてのローカルPython環境構築ですね。COEIROINKの音声を活用するために必要な作業を、以下に 丁寧にステップごとで説明します。

✅ ローカルでCOEIROINKをPythonから使うための流れ


🧰【ステップ1】Pythonのインストール(Windowsの場合)

  1. 公式サイト にアクセス
  2. Download Python 3.x.x」ボタンをクリックしてインストーラーをダウンロード
  3. インストーラーを実行して、必ず以下をチェック
    ✅ 「Add Python to PATH」にチェックを入れる(最重要)
  4. 「Install Now」をクリックしてインストール

📦【ステップ2】必要なライブラリのインストール

  1. デスクトップや好きな場所にフォルダを作成(例:「coeiroink_test」)
  2. その中に main.py という名前でPythonファイルを作成
  3. Windowsのコマンドプロンプトを開いて
pip install requests

これで、COEIROINK APIとやり取りするためのライブラリが使えるようになります。


🗣【ステップ3】COEIROINKエンジンを起動する

  1. COEIROINK公式ページ にアクセス
  2. 「COEIROINK エンジン(Windows)」をダウンロード
  3. 解凍して run.exe(または coeiroink-engine.exe)を実行
  4. 正常に起動すれば、ブラウザで 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リクエストの例を掲載してくれています。

APIリクエストの例が見たい -COEIROINK:ヘルプ

しかしこれコードをコマンドプロンプトにコピペしたら「複数行はダメです」と警告が出ましたΣ(゚Д゚)

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 coeiroink api

これで動くんだからPythonでも動くでしょう。

実際にやってみる

PythonはGoogle Colabでちょっといじったことがある程度だけど、ChatGPT氏の言うとおりにやってみます。

Pythonのインストール

↓からPythonをダウンロードする。

Download Python
The official home of the Python Programming Language
python coeiroink api

↓インストーラーを起動して、Add Pythonなんとかにチェックを入れてインストールすればOK。

必要なライブラリのインストール

コマンドプロンプトを開いてコマンドを入れればインストールできます。

pip install requests

COEIROINKにAPIでアクセスして動かす

デスクトップにcoeiroink_testっていうフォルダを作って、メモ帳でmain.pyを作りました。

python coeiroink api

↓のスクリプトを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氏に聞いてみたけどダメっぽい。

python coeiroink api

しかしwavを作らずにメモリ上で再生だけさせる方法があるっぽい。

これができればテキスト部分を音声入力したやつに変えるだけで、ほぼリアルタイムでできるかな…。

python coeiroink api

でもちょっと長くなりそうなので続く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氏に聞きながらやれば大抵はできるかな(^_^;)

うまく動かせたら追記します(*^_^*)

タイトルとURLをコピーしました