VOICEVOXをREST APIとして利用する
VOICEVOX とは
VOICEVOX は音声合成ソフトウェアである。クレジット表記を行い利用規約に同意すれば、商用、非商用問わず無料で利用できる。
API を確認する
VOICEVOX を起動した上で、以下にアクセスすれば API を確認できる。
API を利用して合成音声を行う
js
/**
* スピーカー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 などで公開すれば良い。