use whisper
v0.2.0
رد الفعل على API Openai Whisper مع مسجل الكلام ، النسخ في الوقت الفعلي وإزالة الصمت المدمجة في
يتم تطوير UseWhisper لـ React Native.
المستودع: https://github.com/chengsokdara/use-whisper-niater
التقدم: Chengsokdara/Use-Whisper Native#1
npm i @chengsokdara/use-whisper
yarn add @chengsokdara/use-whisper
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
const {
recording ,
speaking ,
transcribing ,
transcript ,
pauseRecording ,
startRecording ,
stopRecording ,
} = useWhisper ( {
apiKey : process . env . OPENAI_API_TOKEN , // YOUR_OPEN_AI_TOKEN
} )
return (
< div >
< p > Recording: { recording } < / p >
< p > Speaking: { speaking } < / p >
< p > Transcribing: { transcribing } < / p >
< p > Transcribed Text: { transcript . text } < / p >
< button onClick = { ( ) => startRecording ( ) } > Start < / button >
< button onClick = { ( ) => pauseRecording ( ) } > Pause < / button >
< button onClick = { ( ) => stopRecording ( ) } > Stop < / button >
< / div >
)
}
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
/**
* you have more control like this
* do whatever you want with the recorded speech
* send it to your own custom server
* and return the response back to useWhisper
*/
const onTranscribe = ( blob : Blob ) => {
const base64 = await new Promise < string | ArrayBuffer | null > (
( resolve ) => {
const reader = new FileReader ( )
reader . onloadend = ( ) => resolve ( reader . result )
reader . readAsDataURL ( blob )
}
)
const body = JSON . stringify ( { file : base64 , model : 'whisper-1' } )
const headers = { 'Content-Type' : 'application/json' }
const { default : axios } = await import ( 'axios' )
const response = await axios . post ( '/api/whisper' , body , {
headers ,
} )
const { text } = await response . data
// you must return result from your server in Transcript format
return {
blob ,
text ,
}
}
const { transcript } = useWhisper ( {
// callback to handle transcription with custom server
onTranscribe ,
} )
return (
< div >
< p > { transcript . text } < / p >
< / div >
)
}
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
const { transcript } = useWhisper ( {
apiKey : process . env . OPENAI_API_TOKEN , // YOUR_OPEN_AI_TOKEN
streaming : true ,
timeSlice : 1_000 , // 1 second
whisperConfig : {
language : 'en' ,
} ,
} )
return (
< div >
< p > { transcript . text } < / p >
< / div >
)
}
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
const { transcript } = useWhisper ( {
apiKey : process . env . OPENAI_API_TOKEN , // YOUR_OPEN_AI_TOKEN
// use ffmpeg-wasp to remove silence from recorded speech
removeSilence : true ,
} )
return (
< div >
< p > { transcript . text } < / p >
< / div >
)
}
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
const { transcript } = useWhisper ( {
apiKey : process . env . OPENAI_API_TOKEN , // YOUR_OPEN_AI_TOKEN
// will auto start recording speech upon component mounted
autoStart : true ,
} )
return (
< div >
< p > { transcript . text } < / p >
< / div >
)
}
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
const { transcript } = useWhisper ( {
apiKey : process . env . OPENAI_API_TOKEN , // YOUR_OPEN_AI_TOKEN
nonStop : true , // keep recording as long as the user is speaking
stopTimeout : 5000 , // auto stop after 5 seconds
} )
return (
< div >
< p > { transcript . text } < / p >
< / div >
)
}
import { useWhisper } from '@chengsokdara/use-whisper'
const App = ( ) => {
const { transcript } = useWhisper ( {
apiKey : process . env . OPENAI_API_TOKEN , // YOUR_OPEN_AI_TOKEN
autoTranscribe : true ,
whisperConfig : {
prompt : 'previous conversation' , // you can pass previous conversation for context
response_format : 'text' , // output text instead of json
temperature : 0.8 , // random output
language : 'es' , // Spanish
} ,
} )
return (
< div >
< p > { transcript . text } < / p >
< / div >
)
}
معظم هذه التبعيات محملة كسول ، لذلك يتم استيرادها فقط عند الحاجة إليها
اسم | يكتب | القيمة الافتراضية | وصف |
---|---|---|---|
apikey | خيط | '' ' | رمز Openai API الخاص بك |
autostart | منطقية | خطأ شنيع | تسجيل الكلام Auto Start على جبل المكون |
تصفيات AutoTranscribe | منطقية | حقيقي | يجب نسخ تلقائي بعد التوقف عن التسجيل |
وضع | خيط | النسخ | السيطرة على وضع الهمس إما النسخ أو الترجمات ، حاليا تدعم الترجمة فقط إلى اللغة الإنجليزية |
بدون توقف | منطقية | خطأ شنيع | إذا كان هذا صحيحًا ، فسيتم إيقاف التسجيل بعد التوقف. ومع ذلك ، إذا استمر المستخدم في التحدث ، فسيستمر التسجيل في التسجيل |
إزالة | منطقية | خطأ شنيع | إزالة الصمت قبل إرسال الملف إلى Openai API |
توقف | رقم | 5000 مللي ثانية | إذا كان دون توقف صحيح ، يصبح هذا مطلوبًا. هذا التحكم عند توقف التسجيل التلقائي |
جاري | منطقية | خطأ شنيع | نسخ الكلام في الوقت الفعلي على أساس انخفاض الوقت |
انخفاض الوقت | رقم | 1000 مللي ثانية | الفاصل بين كل حدث onDataavail |
WhisperConfig | Whisperapiconfig | غير محدد | تهيئة نسخ API الهامس |
ondataavailaived | (Blob: Blob) => void | غير محدد | وظيفة رد الاتصال للحصول على نقطة مسجلة في الفاصل الزمني بين الزمن |
ontranscribe | (blob: blob) => الوعد <نصوص> | غير محدد | وظيفة رد الاتصال للتعامل مع النسخ على الخادم المخصص الخاص بك |
اسم | يكتب | القيمة الافتراضية | وصف |
---|---|---|---|
اِسْتَدْعَى | خيط | غير محدد | نص اختياري لتوجيه نمط النموذج أو متابعة شريحة صوتية سابقة. يجب أن يتطابق المطالبة مع لغة الصوت. |
استجابة _format | خيط | جيسون | تنسيق إخراج النص ، في أحد هذه الخيارات: JSON أو TEXT أو SRT أو VERBOSE_JSON أو VTT. |
درجة حرارة | رقم | 0 | درجة حرارة أخذ العينات ، بين 0 و 1. القيم الأعلى مثل 0.8 ستجعل الإخراج أكثر عشوائيًا ، في حين أن القيم المنخفضة مثل 0.2 ستجعلها أكثر تركيزًا وحتمية. إذا تم ضبطه على 0 ، فسيستخدم النموذج احتمال السجل لزيادة درجة الحرارة تلقائيًا حتى يتم ضرب بعض العتبات. |
لغة | خيط | en | لغة الصوت الإدخال. سيؤدي توفير لغة الإدخال بتنسيق ISO-639-1 إلى تحسين الدقة والكمون. |
اسم | يكتب | وصف |
---|---|---|
تسجيل | منطقية | دولة تسجيل الكلام |
تكلم | منطقية | اكتشف عندما يتحدث المستخدم |
نسخ | منطقية | أثناء إزالة الصمت من الكلام وإرسال طلب إلى Openai Whisper API |
نص | نص | عودة الكائن بعد نسخ الهمس كاملة |
pauserecording | يعد | وقفة تسجيل الكلام |
StarTrecording | يعد | ابدأ تسجيل الكلام |
StopRecording | يعد | توقف عن تسجيل الكلام |
اسم | يكتب | وصف |
---|---|---|
النقطة | النقطة | خطاب مسجل في JavaScript Blob |
نص | خيط | يتم إرجاع النص المكتوب من API Whisper |
اتصل بي للحصول على تطوير تطبيق الويب أو الهاتف المحمول باستخدام React أو React Native
https://chengsokdara.github.io