当前位置: 首页 > news >正文

双向流式API实现实时语音合成

传统文本转语音的挑战

传统文本转语音API采用请求-响应模式。这要求您在发起合成请求之前收集完整的文本。某机构Polly虽然能在请求后增量式流式返回音频,但瓶颈在于输入端——您必须等到文本完全可用才能开始发送。在由大语言模型驱动的对话应用中,文本是逐令牌生成的,这意味着需要等待整个响应生成完毕才能开始合成。

新功能:双向流式传输

StartSpeechSynthesisStreamAPI 引入了一种根本不同的方法:

  • 增量发送文本:文本一旦可用即可流式传输给某机构Polly,无需等待完整句子或段落
  • 即时接收音频:实时获取生成的合成音频字节
  • 控制合成时机:使用flush配置触发对已缓冲文本的立即合成
  • 真正的双工通信:通过单一连接同时发送和接收

关键组件

组件方向用途
TextEvent客户端 → 某机构Polly发送待合成的文本
CloseStreamEvent客户端 → 某机构Polly表示文本输入结束
AudioEvent某机构Polly → 客户端接收合成的音频块
StreamClosedEvent某机构Polly → 客户端确认流已完成

性能基准测试

使用相同输入(7,045个字符、970字的散文,Matthew声音+Generative引擎,MP3输出,24kHz,us-west-2区域)进行对比:

指标传统SynthesizeSpeech双向流式改进
总处理时间115,226 ms (~115秒)70,071 ms (~70秒)快39%
API调用次数271减少27倍
发送的句子数27(顺序)27(逐词流式)
总音频字节2,354,2922,324,636

技术实现

创建异步Polly客户端

PollyAsyncClientpollyClient=PollyAsyncClient.builder().region(Region.US_WEST_2).credentialsProvider(DefaultCredentialsProvider.create()).build();StartSpeechSynthesisStreamRequestrequest=StartSpeechSynthesisStreamRequest.builder().voiceId(VoiceId.JOANNA).engine(Engine.GENERATIVE).outputFormat(OutputFormat.MP3).sampleRate("24000").build();

发送文本事件

TextEventtextEvent=TextEvent.builder().text("Hello, this is streaming text-to-speech!").build();

处理音频事件

StartSpeechSynthesisStreamResponseHandlerresponseHandler=StartSpeechSynthesisStreamResponseHandler.builder().onResponse(response->System.out.println("Stream connected")).onError(error->handleError(error)).subscriber(StartSpeechSynthesisStreamResponseHandler.Visitor.builder().onAudioEvent(audioEvent->{byte[]audioData=audioEvent.audioChunk().asByteArray();playOrBufferAudio(audioData);}).onStreamClosedEvent(event->{System.out.println("Synthesis complete. Characters processed: "+event.requestCharacters());}).build()).build();

LLM流式集成模式

// 启动Polly流pollyStreamer.startStream(VoiceId.JOANNA,audioPlayer::playChunk);// 当LLM生成令牌时...llmClient.streamCompletion(prompt,token->{booleanisSentenceEnd=token.endsWith(".")||token.endsWith("!")||token.endsWith("?");pollyStreamer.sendText(token,isSentenceEnd);});// LLM完成时pollyStreamer.closeStream();

业务收益

改善用户体验:音频在LLM仍在生成时就开始播放,掩盖了后端处理时间。更快速、响应更及时的交互可提高用户留存率和满意度。

降低运营成本

成本因素传统分块方法双向流式
基础设施WebSocket服务器、负载均衡器、分块中间件客户端直连某机构Polly
开发工作自定义分块逻辑、音频重组、错误处理SDK处理复杂性
维护成本多个组件需要监控和更新单一集成点
API调用每个请求多次调用(每块一次)单个流会话

推荐使用场景

  • 对话式AI助手 – 将LLM响应直接流式合成语音
  • 实时翻译 – 在生成翻译文本的同时进行合成
  • 交互式语音应答 – 动态响应的电话系统
  • 无障碍工具 – 实时屏幕阅读器和文本转语音
  • 游戏 – 动态NPC对话和旁白
  • 实时字幕 – 实时转录系统的音频输出FINISHED
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
http://www.jsqmd.com/news/591680/

相关文章:

  • 告别命令行:QtAdb图形化ADB工具让你的Android调试体验焕然一新
  • 3分钟上手res-downloader:全网资源下载终极指南
  • 鸿蒙MapKit地图开发:除了显示地图,用mapController还能玩出哪些花样?(标记、画圆实战)
  • 2026届毕业生推荐的AI科研工具解析与推荐
  • 武汉有名的园林规划设计公司有哪些,湖北凯蒂园林价格贵吗? - 工业设备
  • 3大突破性架构让AI开发者轻松驾驭GPU算力
  • ST7789开源驱动实战指南:从原理到嵌入式显示应用
  • BiliTools哔哩哔哩工具箱2026终极指南:跨平台资源管理完整解决方案
  • 如何用Ryujinx模拟器在PC上畅玩Switch游戏:从入门到精通
  • 2026年武汉有名的园林规划设计品牌企业排名,哪家性价比高 - 工业品网
  • Kandinsky-5.0-I2V-Lite-5s企业应用:数据库课程设计中的动态数据可视化
  • Mirage Flow智能代码补全:提升VS Code开发效率300%
  • 不用魔法也能玩转李宏毅AI课:手把手教你本地运行2024生成式AI作业(附中文镜像版GitHub链接)
  • GetQzonehistory:个人数字记忆的本地化归档解决方案
  • 2026年忻州口碑好的西点西餐学校推荐,专业教学有保障 - 工业设备
  • OpCore-Simplify:智能配置引擎与兼容性验证驱动的黑苹果自动化工具
  • YimMenu完全指南:从防崩溃保护到游戏体验增强的全方位解决方案
  • 本地化字幕神器VideoCaptioner(卡卡字幕助手)从安装到实战:解决‘路径错误’等常见问题,附SRT文件一键导入剪映技巧
  • 告别重复造轮子:用快马AI高效生成rubbish期刊官网主体代码
  • 数据结构之红黑树
  • WindowResizer完整指南:如何突破Windows窗口限制自由调整大小
  • Windows 10/11终极HEIC缩略图解决方案:免费让iPhone照片在资源管理器完美预览
  • 2026年山西口碑好的西点西餐学校推荐,正规学校全解析 - 工业品网
  • Markor:Android平台的极简效率文本编辑工具
  • 无人机多光谱遥感技术在城市黑臭水体治理中的智能监测与精准溯源
  • web文本控制
  • 实战指南:基于快马平台与百度语音合成,构建网页内容朗读助手
  • 天际特别版模组管理:从冲突诊断到性能优化的全流程解决方案
  • 终极指南:如何用FFXVIFix彻底优化《最终幻想16》游戏体验
  • zteOnu实战指南:中兴光猫工厂模式激活与高级管理解决方案