如何在Amazon Connect中接入Murf、Wellsaid等API化TTS服务?
实现第三方NTTS(如Murf.ai、WellSaid Labs)替代Amazon Polly接入Amazon Connect的方法
Amazon Connect没有原生支持直接对接第三方NTTS服务,核心解决方案是通过Lambda函数作为中间层,完成第三方NTTS API调用、音频处理,再将结果返回给Connect用于语音交互,具体步骤如下:
1. 准备第三方NTTS服务凭证
- 注册Murf.ai或WellSaid Labs账号,获取对应的API密钥/令牌
- 确认服务支持的音频格式:Amazon Connect适配电话线路的最佳格式是PCM 16kHz 16-bit单声道WAV,在API调用时指定该格式参数
2. 创建Lambda中间层函数
编写Lambda函数接收Connect传递的文本,调用第三方NTTS API生成音频并返回给Connect。以下是Python示例(以Murf.ai为例):
import requests import base64 def lambda_handler(event, context): # 从Connect事件中提取待合成文本 text = event['Details']['Parameters']['TextToSpeak'] # Murf.ai API调用配置 api_key = "你的Murf API密钥" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } payload = { "text": text, "voiceId": "rachel", # 替换为你选择的Murf语音ID "format": "wav", "sampleRate": 16000 } try: response = requests.post("https://api.murf.ai/v1/speech/generate", headers=headers, json=payload) response.raise_for_status() # 将音频转为Base64编码(Connect要求返回格式) audio_base64 = base64.b64encode(response.content).decode('utf-8') return { "statusCode": 200, "audioBase64": audio_base64, "audioContentType": "audio/wav" } except Exception as e: # 调用失败时返回错误信息,可在此添加降级到Polly的逻辑 return { "statusCode": 500, "errorMessage": f"语音合成失败: {str(e)}" }
- 注意:如果第三方NTTS采用异步生成模式(先返回任务ID),需在Lambda中实现轮询逻辑获取音频结果,或结合Connect的异步回调机制处理
- 配置Lambda的IAM权限:允许Amazon Connect调用该Lambda,若部署在VPC内需配置NAT网关以访问外部API
3. 在Amazon Connect中集成Lambda
- 进入Connect实例的**联系流(Contact flows)**页面,创建或编辑目标联系流
- 添加Invoke Lambda function模块,选择你创建的Lambda函数,配置输入参数(传递待合成的文本内容)
- 添加Play prompt模块,选择Text-to-speech (TTS),再选择Use a Lambda function,关联刚才的Lambda调用结果,将返回的音频作为播放内容
4. 错误处理与降级机制
- 在Lambda函数中添加异常捕获,当第三方服务不可用时,可临时切换调用Amazon Polly作为降级方案
- 在Connect联系流中配置错误分支,当Lambda调用失败时,播放默认提示语并引导用户重试
5. 性能优化建议
- 缓存高频使用的固定文本音频(如欢迎语、操作提示),减少重复API调用,降低延迟
- 选择与Amazon Connect实例同区域或邻近区域的第三方NTTS API端点,缩短网络传输时间
- 调整Lambda函数的内存配置(建议至少256MB),提升音频编码与传输效率
内容的提问来源于stack exchange,提问作者1Mayur
相关产品推荐
相关产品推荐

