use whisper
v0.2.0
React Hooce для API Whisper API Open с речевым регистратором, встроенным транскрипцией в реальном времени и удалением молчания
Использование, которое развивается для NATING Native.
Репозиторий: https://github.com/chengsokdara/use-wisper-tanity
Прогресс: Ченгсокдара/Пользовательский-то-родной#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 | нить | '' | Ваш токен API OpenAI |
AutoStart | логический | ЛОЖЬ | Запись речи автоматического начала на монтировании компонента |
Автотрансляция | логический | истинный | Должен на автотранскребку после записи остановки |
режим | нить | транскрипции | Режим управления шепотом либо транскрипции, либо переводы, в настоящее время поддерживают только перевод на английский язык |
без остановки | логический | ЛОЖЬ | Если это правда, запись будет остановкой после остановки после STOPTIMEOUT. Однако, если пользователь продолжит говорить, регистратор будет продолжать запись |
Удаление | логический | ЛОЖЬ | Удалить молчание перед отправкой файла в API OpenAI |
Stoptimeout | число | 5000 мс | Если без остановки это правда, это становится необходимым. Этот контроль, когда автозапрокат рекордер |
потоковая передача | логический | ЛОЖЬ | транскрибировать речь в режиме реального времени на основе времен |
времена | число | 1000 мс | интервал между каждым событием OndataAvailable |
Whisperconfig | Whisperapiconfig | неопределенный | Конфигурация транскрипции API Whisper API |
ondataavailable | (Blob: Blob) => void | неопределенный | Функция обратного вызова для получения записи Blob в интервале между временем |
ontranscribe | (Blob: Blob) => Ording <ranscript> | неопределенный | Функция обратного вызова для обработки транскрипции на своем собственном сервере |
Имя | Тип | Значение по умолчанию | Описание |
---|---|---|---|
быстрый | нить | неопределенный | Дополнительный текст для руководства стилем модели или продолжения предыдущего аудио -сегмента. Подсказка должна соответствовать аудио языку. |
response_format | нить | json | Формат вывода транскрипта в одном из этих параметров: JSON, TEXT, SRT, VERBOSE_JSON или VTT. |
температура | число | 0 | Температура отбора проб, между 0 и 1. Более высокие значения, подобные 0,8, сделают выход более случайным, в то время как более низкие значения, такие как 0,2, сделают его более сфокусированным и детерминированным. Если установить на 0, модель будет использовать вероятность журнала для автоматического повышения температуры до тех пор, пока не будут достигнуты определенные пороговые значения. |
язык | нить | поступка | Язык входного аудио. Предоставление языка ввода в формате ISO-639-1 повысит точность и задержку. |
Имя | Тип | Описание |
---|---|---|
запись | логический | Государство записи речи |
Говорящий | логический | Обнаружение, когда пользователь говорит |
транскрибирование | логический | При удалении молчания из речи и отправьте запрос на API Openai Whisper API |
транскрипт | Транскрипт | Возврат объекта после завершения транскрипции шепота |
PAUSERECORDING | Обещать | Пауза речевая запись |
Startecrobirging | Обещать | Начальная запись речи |
остановка регистрации | Обещать | Остановить запись речи |
Имя | Тип | Описание |
---|---|---|
капля | Капля | Записанная речь в JavaScript Blob |
текст | нить | транскрибированный текст, возвращенный из Whisper API |
Свяжитесь со мной для разработки веб -или мобильных приложений, используя React или React Native
https://chengsokdara.github.io