校对:soup
实时浏览器从Bevyl录入原始音频.
@bevyl-ai/live-audio 提供反应钩、波形公用事业和生命周期
用于麦克风捕获、PCM波形生成、实时复制的端口,
并上传插件。 它是浏览器的第一, 并保持应用程序的传输细节
包裹.
软件包不向Bevyl发送音频. 音频仅通过浏览器 应用程序提供的插件或回调 .
安装
bun add @bevyl-ai/live-audio
反应是一种对等依赖. 该软件包使用浏览器麦克风API, Blob, (中文(简体) ),
File, (中文(简体) ), MediaRecorder,和 WebSocket, 因此它应该在浏览器客户端中运行
组件或等同的客户端运行时间.
快速启动
'use client';
import { useLiveAudioRecordingSession } from '@bevyl-ai/live-audio';
export function Recorder() {
const session = useLiveAudioRecordingSession({
objectPath: 'recordings/demo',
plugins: [],
onCaptureUploaded(capture) {
console.log('capture uploaded', capture);
},
});
return (
<div>
<button disabled={session.isStarting} onClick={session.startCapture}>
Start
</button>
<button onClick={session.stopCapture}>Stop</button>
<p>{session.intakeState}</p>
</div>
);
}
插件
插件拥有复制提供者或上传等副作用. 核心内容 记录器调用生命周期方法; 您的应用程序决定符号、 文件和 URL来自.
import type { LiveAudioUploadPlugin } from '@bevyl-ai/live-audio';
export function createUploadPlugin(): LiveAudioUploadPlugin {
return {
id: 'upload',
kind: 'upload',
start() {
return {
async onCaptureComplete({ file, objectName }) {
const url = await uploadFile({ file, objectName });
return {
audio: {
objectName,
url,
},
};
},
};
},
};
}
波形帮助
套件还导出小的零依赖波形 JSON 帮助器 录音机.
import {
AudioWaveformAccumulator,
cropAudioWaveform,
} from '@bevyl-ai/live-audio/audio-waveform';
const accumulator = new AudioWaveformAccumulator(48_000);
accumulator.addMonoSamples(Float32Array.from([0, 0.5, -0.5, 1]));
const waveform = accumulator.toWaveformJson();
const firstSecond = cropAudioWaveform(waveform, 0, 1);
软件包形状
src/session包含useLiveAudioRecordingSession财务报告和审定财务报表useLiveAudioRecorder。 。 。 .src/audio-waveform包含无依赖波形JSON原始.src/hooks包含较低级别的抓取、抄录、上传和波形 钩子.src/plugins/contracts.ts包含LiveAudioPlugin生命周期口.
发展
bun install
bun test
bun run typecheck
许可证
麻省理工学院