项目介绍:use-whisper
use-whisper 是一个为 OpenAI Whisper API 专门设计的 React Hook,它内置了语音录音功能、实时转录和静音删除功能,提升了语音处理的便捷性和智能化。
项目特色
-
语音录音与转录:use-whisper 能够录制用户的语音,并利用 OpenAI Whisper API 将语音内容快速转录为文本。
-
实时转录:项目支持实时转录功能,让用户在语音输入的同时查看转录结果。
-
静音删除:通过静音删除功能,系统在发送至 OpenAI API 之前删除录音中的静音部分,从而节省了处理成本。
安装步骤
您可以通过以下任意方式来安装 use-whisper:
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, // 用户的 OpenAI API 密钥
})
return (
<div>
<p>录音状态: {recording}</p>
<p>讲话状态: {speaking}</p>
<p>转录状态: {transcribing}</p>
<p>转录文本: {transcript.text}</p>
<button onClick={() => startRecording()}>开始</button>
<button onClick={() => pauseRecording()}>暂停</button>
<button onClick={() => stopRecording()}>停止</button>
</div>
)
}
自定义服务器
为了保证 OpenAI API 密钥的安全性,您可以通过自定义服务器来处理录音数据:
import { useWhisper } from '@chengsokdara/use-whisper'
const App = () => {
const onTranscribe = (blob) => {
// 该回调函数允许自定义服务器处理转录
// 并返回结果给 useWhisper
}
const { transcript } = useWhisper({
onTranscribe,
})
return (
<div>
<p>{transcript.text}</p>
</div>
)
}
主要功能演示
-
实时流媒体转录:可以根据设置的时间片段实时转录音频。
-
自动删除静音:利用 ffmpeg 来删除录音中的静音部分,以节省处理成本。
-
组件挂载时自动开始录音:实现组件挂载时立即开始录音。
-
持续录音直到用户停止说话:在用户持续讲话时保持录音,自动在设定时间后停止。
-
自定义 Whisper API 配置:设置自动转录时能够自定义 Whisper API 的配置,如语言、响应格式、温度等。
依赖
use-whisper 依赖以下包来实现其功能:
- @chengsokdara/react-hooks-async:用于异步 React Hooks
- recordrtc:跨浏览器音频录音工具
- lamejs:将 wav 转码为 mp3
- @ffmpeg/ffmpeg:用于静音删除
- hark:用于检测语音
- axios:用于替代 fetch 与 Whisper 端点进行通信
这些依赖会根据需要进行动态加载,优化了资源使用。
未来发展
- 正在开发对 react-native 的支持,计划以 use-whisper/native 项目形式发布。
use-whisper 项目为开发者在 React 应用中提供强大的语音处理能力,降低了处理语音输入和转录的复杂度与成本。对于需要语音识别功能的应用来说,无论是网页端还是移动端,这都是一个理想的选择。