Denoで使える、
OpenAI社の音声読み上げAPIライブラリ「
openai-speech」に、サーバー側API機能を追加。ウェブアプリからも気軽に生成できるようになりました。
バックエンドのコードはとってもシンプル!
import { serveWeb } from "https://code4fukui.github.io/wsutil/serveWeb.js";
import { fetchSpeech } from "./fetchSpeech.js";
serveWeb(async (param, req, path, conn) => {
if (path == "/api/speech") {
return await fetchSpeech(param.txt, { voice: param.voice, speed: param.speed });
}
return null;
});
フロントエンドからバイナリも対応するJSONの上位互換、CBORを経由してAPI呼び出しするコードでMP3データを受け取れます。
import { fetchCBOR } from "https://js.sabae.cc/fetchCBOR.js";
const txt = "読み上げてください。";
const mp3 = await fetchCBOR("./api/speech", { txt });
簡単ですね!
AI声優7名と、スピードを選び、読み上げにかかる時間を表示するUIを作ってみました。
「txt2speech - src on GitHub」
APIキーを取得して、サーバーを立てて動かしてみましょう!読み上げの品質はなかなかいいですが、完璧ではありません。漢字の読み間違いがあったり、時々変な発声をしたりします。
「run on ss.sabae.cc」
ss.sabae.cc上で、コードをあれこれいじって試せます!
links
- OpenAI社の7名のAI声優に一日一創ブログを読み上げてもらう