upload save record wav file

This commit is contained in:
lloydzhou
2024-11-07 11:45:38 +08:00
parent 522627820a
commit db060d732a
3 changed files with 46 additions and 13 deletions

View File

@@ -127,7 +127,6 @@ export function RealtimeChat({
const handleResponse = async (response: RTResponse) => {
for await (const item of response) {
console.log("handleResponse", item);
if (item.type === "message" && item.role === "assistant") {
const botMessage = createMessage({
role: item.role,
@@ -156,12 +155,16 @@ export function RealtimeChat({
};
await Promise.all([textTask(), audioTask()]);
}
// update message.content
chatStore.updateTargetSession((session) => {
session.messages = session.messages.concat();
});
}
// upload audio get audio_url
const blob = audioHandlerRef.current?.savePlayFile();
uploadImage(blob).then((audio_url) => {
botMessage.audio_url = audio_url;
botMessage.date = new Date().toLocaleString();
// botMessage.date = new Date().toLocaleString();
// update text and audio_url
chatStore.updateTargetSession((session) => {
session.messages = session.messages.concat();
@@ -174,16 +177,28 @@ export function RealtimeChat({
const handleInputAudio = async (item: RTInputAudioItem) => {
audioHandlerRef.current?.stopStreamingPlayback();
await item.waitForCompletion();
const { audioStartMillis, audioEndMillis } = item;
// TODO, save input audio_url, and update session
console.log("handleInputAudio", item, audioStartMillis, audioEndMillis);
const userMessage = createMessage({
role: "user",
content: item.transcription,
});
chatStore.updateTargetSession(session, (session) => {
session.messages = session.messages.concat([userMessage]);
});
if (item.transcription) {
const userMessage = createMessage({
role: "user",
content: item.transcription,
});
chatStore.updateTargetSession(session, (session) => {
session.messages = session.messages.concat([userMessage]);
});
// save input audio_url, and update session
const { audioStartMillis, audioEndMillis } = item;
// upload audio get audio_url
const blob = audioHandlerRef.current?.saveRecordFile(
audioStartMillis,
audioEndMillis,
);
uploadImage(blob).then((audio_url) => {
userMessage.audio_url = audio_url;
chatStore.updateTargetSession((session) => {
session.messages = session.messages.concat();
});
});
}
};
const toggleRecording = async () => {