| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { TalkStyle } from "@/features/chat/messages";
- import { TTSBackend } from "@/types/backend";
- export async function elevenlabs(
- config: TTSBackend["elevenlabs"],
- message: string,
- voiceId: string,
- ) {
- const apiKey = config?.elevenlabs_apikey;
- if (! apiKey) {
- throw new Error("Invalid ElevenLabs API Key");
- }
- // Request body
- const body = {
- text: message,
- model_id: config?.elevenlabs_model,
- voice_settings: {
- stability: 0,
- similarity_boost: 0,
- style: 0,
- use_speaker_boost: true
- }
- };
- const elevenlabsRes = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${voiceId}?optimize_streaming_latency=0&output_format=mp3_44100_128`, {
- method: "POST",
- body: JSON.stringify(body),
- headers: {
- "Content-Type": "application/json",
- "Accept": "audio/mpeg",
- "xi-api-key": apiKey,
- },
- });
- if (! elevenlabsRes.ok) {
- throw new Error(`ElevenLabs API Error (${elevenlabsRes.status})`);
- }
- const data = (await elevenlabsRes.arrayBuffer()) as any;
- return { audio: data };
- }
|