diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 5ad781195..aae99992f 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -2,7 +2,7 @@ import toast from 'svelte-french-toast'; import { onMount, tick } from 'svelte'; import { settings } from '$lib/stores'; - import { calculateSHA256, findWordIndices } from '$lib/utils'; + import { blobToFile, calculateSHA256, findWordIndices } from '$lib/utils'; import Prompts from './MessageInput/PromptCommands.svelte'; import Suggestions from './MessageInput/Suggestions.svelte'; @@ -124,6 +124,20 @@ try { files = [...files, doc]; + + if (['audio/mpeg', 'audio/wav'].includes(file['type'])) { + const res = await transcribeAudio(localStorage.token, file).catch((error) => { + toast.error(error); + return null; + }); + + if (res) { + console.log(res); + const blob = new Blob([res.text], { type: 'text/plain' }); + file = blobToFile(blob, `${file.name}.txt`); + } + } + const res = await uploadDocToVectorDB(localStorage.token, '', file); if (res) { @@ -202,9 +216,6 @@ console.log(file, file.name.split('.').at(-1)); if (['image/gif', 'image/jpeg', 'image/png'].includes(file['type'])) { reader.readAsDataURL(file); - } else if (['audio/mpeg', 'audio/wav'].includes(file['type'])) { - const res = await transcribeAudio(localStorage.token, file); - console.log(res); } else if ( SUPPORTED_FILE_TYPE.includes(file['type']) || SUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1)) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index ce25a3146..3200ad441 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -24,7 +24,9 @@ export const SUPPORTED_FILE_TYPE = [ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/octet-stream', 'application/x-javascript', - 'text/markdown' + 'text/markdown', + 'audio/mpeg', + 'audio/wav' ]; export const SUPPORTED_FILE_EXTENSIONS = [ diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index fa0963ea8..79e53d9a5 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -341,3 +341,9 @@ export const extractSentences = (text) => { .map((sentence) => removeEmojis(sentence.trim())) .filter((sentence) => sentence !== ''); }; + +export const blobToFile = (blob, fileName) => { + // Create a new File object from the Blob + const file = new File([blob], fileName, { type: blob.type }); + return file; +};