333 文字
2 分

VOICEVOXをREST APIとして利用する

2023-04-08

VOICEVOX とは#

VOICEVOX は音声合成ソフトウェアである。クレジット表記を行い利用規約に同意すれば、商用、非商用問わず無料で利用できる。

https://voicevox.hiroshiba.jp/

API を確認する#

VOICEVOX を起動した上で、以下にアクセスすれば API を確認できる。

http://localhost:50021/docs

API を利用して合成音声を行う#

/**
* スピーカーIDはhttp://127.0.0.1:50021/speakers で取得できる。
*/
const speakerId = "10";
const text = "Hello, VOICEVOX!";
// まずAudio queryを作成する
const requestUrl = new URL("http://127.0.0.1:50021/audio_query");
requestUrl.searchParams.append("speaker", speakerId);
requestUrl.searchParams.append("text", text);
const query = await (
await fetch(requestUrl, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
})
).json();
// 合成音声を取得する
const requestUrl = new URL("http://127.0.0.1:50021/synthesis");
requestUrl.searchParams.append("speaker", speakerId);
requestUrl.searchParams.append("enable_interrogative_upspeak", "true");
const audioData = await (
await fetch(requestUrl, {
method: "POST",
headers: {
"Content-Type": "application/json",
accpet: "audio/wav",
},
body: JSON.stringify(query),
})
).blob();
// 音声を再生する
const audio = new Audio(URL.createObjectURL(audioData));
audio.play();

localhost ではなく 127.0.0.1 を利用する#

VOICEVOX の API を利用する際、localhost ではなく 127.0.0.1 を利用すると応答速度が数秒単位で短縮されるという話がある。 実際、私の環境でも localhost を利用した場合、数秒の遅延が発生した。

具体的な理由は不明だが、以下の記事が関連しているかもしれない。

https://serverfault.com/questions/66347/why-is-the-response-on-localhost-so-slow/444338

セルフホスティングする#

Docker イメージが公開されているため、これを Cloud Run などで公開すれば良い。

https://hub.docker.com/r/voicevox/voicevox_engine

VOICEVOXをREST APIとして利用する
https://blog.ohirunewani.com/posts/voicevox-rest-api/
作者
hrdtbs
公開日
2023-04-08
ライセンス
CC BY-NC-SA 4.0