OpenAI 流式语音合成
此包会给一个代理语音合成提供者, 将文本符号分割成句子块并将其发送到 OpenAI Audio Speech HTTP API 使用 fetch。 。 。 .
安装
npm install @framers/agentos-ext-streaming-tts-openai
同伴依赖 : @framers/agentos (单位:千美元)>=0.10.40) (中文(简体) ).
使用量
import { AgentOS } from '@framers/agentos';
const agentos = await AgentOS.create({
extensionManifest: {
packs: [
{
package: '@framers/agentos-ext-streaming-tts-openai',
options: { voice: 'nova', format: 'opus' },
},
],
},
extensionSecrets: {
OPENAI_API_KEY: process.env.OPENAI_API_KEY!,
},
});
配置
会议 providerOptions 覆盖 model, (中文(简体) ), voice, (中文(简体) ), format 财务报告和审定财务报表 maxBufferMs。基础 URL 仍然是一个提供者设置.
| 选项 | 秘密编号 | 环境变量 | 需求 | 默认 |
|---|---|---|---|---|
apiKey (提供者配置; 选项在运行时也接受) | OPENAI_API_KEY | 无 | 是, 提供者接口 | 包厂空字符串 |
baseUrl | 无 | 无 | 没有 | https://api.openai.com |
model | 无 | 无 | 没有 | 'tts-1' |
voice | 无 | 无 | 没有 | 'nova' |
format | 无 | 无 | 没有 | 'opus' |
maxBufferMs | 无 | 无 | 没有 | 2000 毫秒 |
页:1
包注册一个已启用 streaming-tts-provider 有提供者 id openai-streaming-tts。 。 。 . createOpenAIStreamingTTS 还从 API 密钥和可选设置创建独立的提供者.
句子边界需要先标出后标出白空格. 不活动计时器在每个符上重放并发出文本到上个空格,保留最终的单词. flush 散发所剩文本并等待未决的综合请求。 等待同一请求的弗卢什有一个结果,所以没有一个报告一个失败的批次完成.
每个句子开始一个 HTTP POST 到 /v1/audio/speech 在它的前身完成之后。 在核心和遗留的音频事件发出之前,将完全读取答复。 请求和音频按输入顺序排列.
会话保留遗留事件并添加 audio 财务报告和审定财务报表 flush_complete. Raw PCM 持续时间来自样本字节;压缩持续时间仍然是一个字数估计.
cancel 中止请求和报告缓冲文本. close 取消计时器, 中止请求并发送 close请求出错 error,如WAV响应不是一个很好配置的PCM16单容器;中止错误被压制. 交付时 error 扔出, 因为没有收听器被附着或收听器被丢出, 后面的句子仍然运行, 接下来的句子 flush 除此外拒绝。 没有设定 HTTP 超时, 通用会话 language 未转发.
工厂在密钥缺失时使用空密钥, 除非运行时选项扩展覆盖 apiKey它不验证证书或读取环境变量.
核心事件兼容性
核心消费者得到 audio 判决顺序和 flush_complete 成功排出合成批量。 遗产 audio_chunk, (中文(简体) ), utterance_start 财务报告和审定财务报表 utterance_complete 活动仍可提供。 订阅两个音频名称,而不是两个。 请求按顺序执行,所以快速的第二次请求不能超过第一次请求。 取消中止允许 HTTP 工作并删除已队列的句子 .
核心音频接受PCM,MP3和Opus. WAV在WAV容器中被明确宣布为PCM. AAC和FLAC仍然可供传统用户使用,当核心音频听众在场时,在合成前被拒绝. 原始PCM持续时间取自样本字节;压缩持续时间仍为估计. 完成报告综合,不得重复播放. 此仅事件适配器没有等待播放的回放槽,也不声称主机兼容 .
许可证
阿帕奇 - 2.0