APP.tsx中调用AudioManager
-
const transcriber = useTranscriber();
代码实现了一个自定义的 React 钩子 useTranscriber 来初始化一个 实例transcriber
,用于处理音频转录过程,结合 Web Worker 和后台模型进行推理。
-
<AudioManager transcriber={transcriber} />
通过 useTranscriber() 获取到的 transcriber 对象作为 props 传递给 AudioManager 组件。这意味着 AudioManager 可以访问 transcriber 上的所有方法和属性,从而可以根据用户的交互(如选择文件、点击录音按钮等)来触发相应的音频处理操作。
AudioManager实现
- AudioManager.tsx中实现
AudioManager
export function AudioManager(props: {
transcriber: Transcriber }) {
const [progress, setProgress] = useState<number | undefined>(undefined);
const [audioData, setAudioData] = useState<
| {
buffer: AudioBuffer;
url: string;
source: AudioSource;
mimeType: string;
}
| undefined
>(undefined);
const [audioDownloadUrl, setAudioDownloadUrl] = useState<string | undefined>(undefined);
const isAudioLoading = progress !== undefined;
const resetAudio = () => {
setAudioData(undefined);
setAudioDownloadUrl(undefined);
};
const setAudioFromDownload = async (
data: ArrayBuffer,
mimeType: string,
) => {
const audioCTX = new AudioContext({
sampleRate: Constants.SAMPLING_RATE,
});
const blobUrl = URL.createObjectURL(
new Blob([data], {
type: "audio/*" }