You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

第三方语音API与Twilio集成实现文本转语音方案咨询

在Twilio中集成第三方文本转语音(TTS)的实现方案

Twilio原生<Say>标签仅支持其自带的语音引擎,要集成第三方TTS,核心思路是借助第三方API生成音频文件,再通过Twilio的<Play>标签播放,以下是两种可行方案:

方案1:预生成音频文件(适合固定文本场景)

  • 调用目标第三方TTS API,将需要转换的文本生成音频文件(推荐MP3格式,Twilio原生支持)
  • 将音频文件上传到公开可访问的存储服务(如对象存储、静态文件服务器),确保文件URL无访问限制
  • 在Twilio的Twiml响应中使用<Play>标签指向该音频URL:
<Response>
  <Play>https://your-public-host.com/generated-voice.mp3</Play>
</Response>

方案2:实时生成音频(适合动态文本场景)

需要搭建一个中间Web服务来中转Twilio请求与第三方TTS API:

  1. 配置Twilio语音号码的Webhook地址为你的服务接口
  2. 当Twilio触发呼叫事件时,会向你的服务发送POST请求
  3. 在你的服务中完成以下步骤:
    • 从Twilio的请求参数中提取待转换的文本
    • 调用第三方TTS API生成音频,将音频临时存储到公开可访问的地址
    • 返回包含<Play>标签的Twiml响应给Twilio,触发音频播放

Python Flask示例代码

from flask import Flask, request, Response
import requests
import uuid
import boto3  # 示例用S3存储临时音频,可替换为其他存储服务

app = Flask(__name__)
s3 = boto3.client('s3', aws_access_key_id='YOUR_KEY', aws_secret_access_key='YOUR_SECRET')
BUCKET_NAME = 'your-temp-bucket'

@app.route("/twilio-dynamic-tts", methods=['POST'])
def dynamic_tts():
    # 获取动态文本,示例从请求参数中获取
    target_text = request.form.get('custom_text', '请提供需要转换的文本')
    
    # 调用第三方TTS API,替换为你的API参数
    tts_api_response = requests.post(
        "https://third-party-tts-api.com/v1/generate",
        json={"content": target_text, "voice_type": "male"},
        headers={"Authorization": "Bearer YOUR_TTS_API_KEY"}
    )
    
    # 生成临时文件名,存储到S3
    temp_file_name = f"tts-{uuid.uuid4()}.mp3"
    s3.put_object(Bucket=BUCKET_NAME, Key=temp_file_name, Body=tts_api_response.content, ContentType='audio/mpeg')
    audio_url = f"https://{BUCKET_NAME}.s3.amazonaws.com/{temp_file_name}"
    
    # 返回Twiml响应
    twiml_content = f"""<Response>
  <Play>{audio_url}</Play>
</Response>"""
    return Response(twiml_content, mimetype='application/xml')

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

关键注意事项

  • 第三方TTS生成的音频需符合Twilio格式要求:支持MP3、单声道WAV(8kHz/16kHz,16位)
  • 音频URL必须公开可访问,Twilio无法访问带身份验证的资源
  • 实时方案需控制第三方API响应时间,避免超过Twilio Webhook的15秒超时限制

内容的提问来源于stack exchange,提问作者Gurujant Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:42:36