use whisper
v0.2.0
React Hook für Openai Whisper API mit Sprachrekorder, Echtzeit-Transkription und Stille entfernt eingebaut
Die Verwendung von React Native wird entwickelt.
Repository: https://github.com/chengsokdara/use-whisper-native
Fortschritt: Chengsokdara/Nutzungs-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 >
)
}
Die meisten dieser Abhängigkeiten sind faul geladen und werden daher nur importiert, wenn es benötigt wird
Name | Typ | Standardwert | Beschreibung |
---|---|---|---|
Apikey | Saite | '' ' | Ihr Openai API -Token |
Autostart | boolean | FALSCH | Auto -Start -Sprachaufzeichnung auf der Komponentenhalterung |
Autotranscribe | boolean | WAHR | Sollte automatisch transkribieren nach Stoppaufzeichnung |
Modus | Saite | Transkriptionen | Steuerelemente entweder Transkriptionen oder Übersetzungen steuern, unterstützt derzeit nur die Übersetzung in Englisch |
nonstop | boolean | FALSCH | Wenn wahr, wird der Rekord nach Stoptimeout automatisch gestoppt. Wenn der Benutzer jedoch weiter spricht, wird der Rekorder weiter aufgezeichnet |
Entfernung | boolean | FALSCH | Entfernen Sie die Stille, bevor Sie die Datei an OpenAI -API senden |
Stoptimeout | Nummer | 5.000 ms | Wenn Nonstop wahr ist, wird dies erforderlich. Diese Steuerung, wenn der Rekorderautomatik stoppt |
Streaming | boolean | FALSCH | Transkribieren Sie die Sprache in Echtzeit basierend auf den Zeitslice |
Zeitstrahl | Nummer | 1000 ms | Intervall zwischen den einzelnen OndataAvable -Ereignissen |
flüsterconfig | Flüsterapiconfig | undefiniert | Flüsterapi Transkriptionskonfiguration |
ONDATAAVAVABLE | (Blob: Blob) => void | undefiniert | Rückruffunktion zum Erhalten von Blob im Intervall zwischen den Zeitenklappen |
ontranscribe | (Blob: Blob) => Versprechen <transkripts> | undefiniert | Rückruffunktion, um die Transkription auf Ihrem eigenen benutzerdefinierten Server zu verarbeiten |
Name | Typ | Standardwert | Beschreibung |
---|---|---|---|
prompt | Saite | undefiniert | Ein optionaler Text, der den Stil des Modells leitet oder ein früheres Audiosegment fortsetzt. Die Eingabeaufforderung sollte mit der Audiosprache übereinstimmen. |
Antwort_Format | Saite | JSON | Das Format der Transkription in einer dieser Optionen: JSON, Text, SRT, Verbose_json oder Vtt. |
Temperatur | Nummer | 0 | Die Stichprobentemperatur zwischen 0 und 1. Höhere Werte wie 0,8 machen den Ausgang zufällig, während niedrigere Werte wie 0,2 ihn fokussierter und deterministischer machen. Wenn das Modell auf 0 eingestellt ist, wird die Protokollwahrscheinlichkeit automatisch erhöht, um die Temperatur automatisch zu erhöhen, bis bestimmte Schwellenwerte getroffen werden. |
Sprache | Saite | en | Die Sprache des Eingabe -Audio. Durch die Lieferung der Eingangssprache im ISO-639-1-Format wird die Genauigkeit und Latenz verbessert. |
Name | Typ | Beschreibung |
---|---|---|
Aufnahme | boolean | Sprachaufzeichnungsstaat |
Apropos | boolean | erkennen, wann der Benutzer spricht |
transkriben | boolean | Beim Entfernen der Stille aus der Sprache und senden Sie eine Anfrage an Openai Whisper API |
Transkript | Transkript | Objektrückgabe nach der Flüstertranskription abgeschlossen |
pauserecording | Versprechen | Pause Sprachaufzeichnung |
Starträt | Versprechen | Sprachaufzeichnung starten |
Stoppern | Versprechen | STOP -Sprachaufzeichnung |
Name | Typ | Beschreibung |
---|---|---|
Klecks | Klecks | Aufgenommene Sprache in JavaScript Blob |
Text | Saite | Transkribierter Text von Whisper API zurückgegeben |
Kontaktieren Sie mich für Web- oder Mobile -App -Entwicklung mit React oder React Native
https://chengsokdara.github.io