333 文字
2 分
VOICEVOXをREST APIとして利用する
VOICEVOX とは
VOICEVOX は音声合成ソフトウェアである。クレジット表記を行い利用規約に同意すれば、商用、非商用問わず無料で利用できる。
API を確認する
VOICEVOX を起動した上で、以下にアクセスすれば API を確認できる。
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 などで公開すれば良い。
VOICEVOXをREST APIとして利用する
https://blog.ohirunewani.com/posts/voicevox-rest-api/