mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-07-27 06:28:50 +00:00
have messages working but streaming still not fixed yet
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
This commit is contained in:
parent
fc3286be7e
commit
f7c9651ca7
23 changed files with 4749 additions and 184 deletions
50
llama_stack/ui/lib/audio-utils.ts
Normal file
50
llama_stack/ui/lib/audio-utils.ts
Normal file
|
@ -0,0 +1,50 @@
|
|||
type RecordAudioType = {
|
||||
(stream: MediaStream): Promise<Blob>
|
||||
stop: () => void
|
||||
currentRecorder?: MediaRecorder
|
||||
}
|
||||
|
||||
export const recordAudio = (function (): RecordAudioType {
|
||||
const func = async function recordAudio(stream: MediaStream): Promise<Blob> {
|
||||
try {
|
||||
const mediaRecorder = new MediaRecorder(stream, {
|
||||
mimeType: "audio/webm;codecs=opus",
|
||||
})
|
||||
const audioChunks: Blob[] = []
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
mediaRecorder.ondataavailable = (event) => {
|
||||
if (event.data.size > 0) {
|
||||
audioChunks.push(event.data)
|
||||
}
|
||||
}
|
||||
|
||||
mediaRecorder.onstop = () => {
|
||||
const audioBlob = new Blob(audioChunks, { type: "audio/webm" })
|
||||
resolve(audioBlob)
|
||||
}
|
||||
|
||||
mediaRecorder.onerror = () => {
|
||||
reject(new Error("MediaRecorder error occurred"))
|
||||
}
|
||||
|
||||
mediaRecorder.start(1000)
|
||||
;(func as RecordAudioType).currentRecorder = mediaRecorder
|
||||
})
|
||||
} catch (error) {
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : "Unknown error occurred"
|
||||
throw new Error("Failed to start recording: " + errorMessage)
|
||||
}
|
||||
}
|
||||
|
||||
;(func as RecordAudioType).stop = () => {
|
||||
const recorder = (func as RecordAudioType).currentRecorder
|
||||
if (recorder && recorder.state !== "inactive") {
|
||||
recorder.stop()
|
||||
}
|
||||
delete (func as RecordAudioType).currentRecorder
|
||||
}
|
||||
|
||||
return func as RecordAudioType
|
||||
})()
|
Loading…
Add table
Add a link
Reference in a new issue