低声片断的语音识别
此包会给代理服务器一个语音识别服务商, 以缓冲重叠的音频块, 并将 WAV 文件发布到 OpenAI Whisper HTTP API 上 fetch。 。 。 .
安装
npm install @framers/agentos-ext-streaming-stt-whisper
同伴依赖 : @framers/agentos (单位:千美元)>=0.10.40) (中文(简体) ).
使用量
import { AgentOS } from '@framers/agentos';
const agentos = await AgentOS.create({
extensionManifest: {
packs: [
{
package: '@framers/agentos-ext-streaming-stt-whisper',
options: { baseUrl: 'https://api.openai.com' },
},
],
},
extensionSecrets: {
OPENAI_API_KEY: process.env.OPENAI_API_KEY!,
},
});
配置
包装厂读秘诀 baseUrl其他设置是会话设置 startSession。 。 。 .
| 选项 | 秘密编号 | 环境变量 | 需求 | 默认 |
|---|---|---|---|---|
apiKey (单独会议) | OPENAI_API_KEY | 无 | 是, 会话接口 | 包厂空字符串 |
baseUrl,被击倒 providerOptions.baseUrl | 无 | 无 | 没有 | https://api.openai.com |
providerOptions.model | 无 | 无 | 没有 | 'whisper-1' |
language,或 providerOptions.language | 无 | 无 | 没有 | undefined,从请求中删除 |
providerOptions.prompt | 无 | 无 | 没有 | undefined |
providerOptions.chunkSizeSamples | 无 | 无 | 没有 | 16000 |
providerOptions.overlapSamples | 无 | 无 | 没有 | 3200 |
页:1
包注册一个已启用 streaming-stt-provider 有提供者 id whisper-chunked。 。 。 . createWhisperChunkedSTT 还从 API 密钥和可选的基础 URL 创建独立的提供者.
音频块发送到 /v1/audio/transcriptions 作为多块WAV的上传,带有无记名认证 verbose_json 回应。 编码器使用固定的音频速率和单PCM而不进行再生. overlapSamples 必须是小于 chunkSizeSamples,或者构造抛出 RangeError。 。 。 .
会话发出 interim_transcript 从块响应中取出,并使用先前的非空响应作为下个提示。 语音边界事件使用RMS能量阈值. 请求失败发出 error 并留会话给后批;失败后的下批冲出没有最后的笔录并丢弃了后批的笔录,所以后批冲出永远不会定稿. 交付时 error 抛出,因为没有收听者被附着,也没有收听者被丢出,以后的块仍然会运行,然后是 flush 除此外拒绝.
flush 提交缓冲音频, 等待命令的 HTTP 请求, 并将最后完成的文本作为最终文本 。 它不汇集所有窗口记录. close 中止请求并压制后期结果。 没有设定请求超时 .
当秘密不存在时,工厂会通过一个空密钥,无法在当地验证. 它不读取环境变量.
核心事件兼容性
订阅 transcript 用于核心 STT 事件形状。 现有 interim_transcript 财务报告和审定财务报表 final_transcript 事件仍与相同有效载荷和临时/最后语义同名。 加入一个命名公约,以避免重复处理应用程序。 Flush排水器在最终输出前接受了HTTP请求;关闭中止请求并压制后期结果. 最初的提示是上下文,从不自行成为笔录.
这是一个滑动窗口 HTTP 块适配器。 它保留了现有的重叠政策和最后一个窗口最后的语义记录。 它不主张本土流体识别、范围化的VAD、每笔资金或有限度的托管输入。 托管使用需要一个带有这些合同的单独范围适配器.
许可证
阿帕奇 - 2.0