we do it live
This commit is contained in:
parent
abde158e34
commit
1f0f09d254
@ -10,6 +10,7 @@ import React, {
|
|||||||
} from "react";
|
} from "react";
|
||||||
import removeMarkdown from "remove-markdown";
|
import removeMarkdown from "remove-markdown";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
|
import * as Echogarden from "echogarden";
|
||||||
|
|
||||||
// More robust sentence splitter using Intl.Segmenter for better accuracy.
|
// More robust sentence splitter using Intl.Segmenter for better accuracy.
|
||||||
function splitIntoSentences(text: string): string[] {
|
function splitIntoSentences(text: string): string[] {
|
||||||
@ -64,18 +65,28 @@ export const TTSProvider = ({
|
|||||||
|
|
||||||
async function generateTTS(sentence: string, index: number): Promise<string> {
|
async function generateTTS(sentence: string, index: number): Promise<string> {
|
||||||
try {
|
try {
|
||||||
const { data, error } = await supabase.functions.invoke("generate-tts", {
|
// const { data, error } = await supabase.functions.invoke("generate-tts", {
|
||||||
body: {
|
// body: {
|
||||||
text: sentence,
|
// text: sentence,
|
||||||
voice: selectedSpeaker,
|
// voice: selectedSpeaker,
|
||||||
index,
|
// index,
|
||||||
},
|
// },
|
||||||
|
// });
|
||||||
|
|
||||||
|
const { audio } = await Echogarden.synthesize(sentence, {
|
||||||
|
engine: "kokoro",
|
||||||
|
voice: selectedSpeaker,
|
||||||
});
|
});
|
||||||
|
|
||||||
setStatus("running");
|
setStatus("running");
|
||||||
|
|
||||||
const { audioUrl } = data as { audioUrl: string };
|
if (!Buffer.isBuffer(audio)) {
|
||||||
return audioUrl;
|
throw new Error("Audio data is not a buffer");
|
||||||
|
}
|
||||||
|
|
||||||
|
const blob = new Blob([audio], { type: "audio/wav" });
|
||||||
|
|
||||||
|
return URL.createObjectURL(blob);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error generating TTS:", error);
|
console.error("Error generating TTS:", error);
|
||||||
toast.error("Failed to generate TTS. Please try again.");
|
toast.error("Failed to generate TTS. Please try again.");
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
"autoprefixer": "10.4.20",
|
"autoprefixer": "10.4.20",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
|
"echogarden": "^2.7.0",
|
||||||
"kokoro-js": "^1.2.0",
|
"kokoro-js": "^1.2.0",
|
||||||
"lucide-react": "^0.486.0",
|
"lucide-react": "^0.486.0",
|
||||||
"next": "latest",
|
"next": "latest",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user