use whisper
v0.2.0
React Hook untuk Openai Whisper API dengan perekam ucapan, transkripsi waktu nyata dan penghapusan keheningan bawaan
Usewhisper untuk React Native sedang dikembangkan.
Repositori: https://github.com/chengsokdara/use-whisper-native
Kemajuan: Chengsokdara/use-whisper-asli#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 >
)
}
Sebagian besar ketergantungan ini dimuat malas, jadi hanya diimpor saat dibutuhkan
Nama | Jenis | Nilai default | Keterangan |
---|---|---|---|
apikey | rangkaian | '' | Token API Openai Anda |
Autostart | Boolean | PALSU | Auto Start Speech Recording pada pemasangan komponen |
Autotranscribe | Boolean | BENAR | harus ditranskrip secara otomatis setelah berhenti merekam |
mode | rangkaian | transkripsi | Kontrol Mode Whisper baik transkripsi atau terjemahan, saat ini hanya mendukung terjemahan ke bahasa Inggris |
nonstop | Boolean | PALSU | Jika benar, rekam akan berhenti secara otomatis setelah stoptimeout. Namun jika pengguna terus berbicara, perekam akan terus merekam |
penghapusan | Boolean | PALSU | Hapus keheningan sebelum mengirim file ke OpenAI API |
stoptimeout | nomor | 5.000 ms | Jika tanpa henti benar, ini menjadi diperlukan. Kontrol ini saat perekam otomatis berhenti |
mengalir | Boolean | PALSU | menyalin pidato secara real-time berdasarkan timeslice |
Timeslice | nomor | 1000 ms | interval antara setiap acara yang tersedia |
Whisperconfig | Whisperapiconfig | belum diartikan | Konfigurasi Transkripsi API Whisper |
ondatavailable | (gumpalan: gumpalan) => void | belum diartikan | Fungsi panggilan balik untuk mendapatkan gumpalan yang direkam dalam interval antara waktu waktu |
Ontranscribe | (gumpalan: gumpalan) => janji <ranscript> | belum diartikan | fungsi panggilan balik untuk menangani transkripsi di server khusus Anda sendiri |
Nama | Jenis | Nilai default | Keterangan |
---|---|---|---|
mengingatkan | rangkaian | belum diartikan | Teks opsional untuk memandu gaya model atau melanjutkan segmen audio sebelumnya. Prompt harus cocok dengan bahasa audio. |
response_format | rangkaian | json | Format output transkrip, dalam salah satu opsi ini: json, teks, srt, verbose_json, atau vtt. |
suhu | nomor | 0 | Suhu pengambilan sampel, antara 0 dan 1. Nilai yang lebih tinggi seperti 0,8 akan membuat output lebih acak, sementara nilai yang lebih rendah seperti 0,2 akan membuatnya lebih fokus dan deterministik. Jika diatur ke 0, model akan menggunakan probabilitas log untuk secara otomatis meningkatkan suhu sampai ambang batas tertentu mengenai. |
bahasa | rangkaian | en | Bahasa audio input. Memasok bahasa input dalam format ISO-639-1 akan meningkatkan akurasi dan latensi. |
Nama | Jenis | Keterangan |
---|---|---|
rekaman | Boolean | status perekaman pidato |
berbicara | Boolean | Deteksi saat pengguna berbicara |
transkrip | Boolean | Sambil menghilangkan keheningan dari pidato dan kirim permintaan ke Openai Whisper API |
salinan | Salinan | pengembalian objek setelah Transkripsi Whisper selesai |
Rekam Peda | Janji | Jeda perekaman pidato |
startrecording | Janji | Mulai perekaman wicara |
Stoprecording | Janji | Hentikan perekaman pidato |
Nama | Jenis | Keterangan |
---|---|---|
gumpal | Gumpal | Pidato yang direkam dalam gumpalan javascript |
teks | rangkaian | Teks yang ditranskripsi dikembalikan dari API Whisper |
Hubungi saya untuk pengembangan web atau aplikasi seluler menggunakan React atau React Native
https://chengsokdara.github.io