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

如何通过Twilio API获取视频通话录音中音频的转写文本

Twilio视频通话音频离线转写实现方案

Twilio Programmable Video 本身不直接绑定录音转写能力,视频通话的音轨是独立存储的,离线转写走Twilio语音识别服务的异步任务链路即可,全程不需要实时处理流,具体实现步骤如下:

  • 第一步:筛选并获取音频录音资源
    视频房间开启录制后,默认会生成三类录制文件:独立视频轨、独立音频轨、合并音视频文件。你当前拿到的RecordingInstance列表里,先筛选出type属性为audio的实例即可拿到纯音频录音资源。
    多人房间下每个参会者的音频会单独存为一条音频录音记录,需要逐个处理。
    参考PHP代码:

    /** @var \Twilio\Rest\Client $twilio */
    $roomSid = 'RMxxxxxxxxxxxx'; // 替换为目标房间的SID
    // 拉取指定房间下所有录制资源,筛选音频类记录
    $audioRecordings = array_filter(
        $twilio->video->recordings->read(['groupingSid' => $roomSid]),
        fn($rec) => $rec->type === 'audio'
    );
    // 取单条音频记录的媒体访问地址(多人场景需遍历所有音频记录)
    $audioMediaUrl = $audioRecordings[0]->mediaUrl;
    

    注意:mediaUrl是带访问权限控制的,Twilio内部服务可以直接拉取该地址的资源,如果你要自己下载需要用Account SID和Auth Token做Basic Auth鉴权。

  • 第二步:创建异步离线转写任务
    拿到音频媒体地址后,直接调用转写接口创建异步任务即可,不需要手动下载再上传音频文件,Twilio会自动拉取存储侧的音频完成识别。
    参考PHP代码:

    $transcription = $twilio->transcriptions->create([
        'mediaUrl' => $audioMediaUrl,
        'languageCode' => 'zh-CN', // 根据实际音频语言调整,英文填en-US
        'speakerDiarization' => true, // 多人场景建议开启,可自动区分不同说话人
        'statusCallback' => 'https://你的服务自有地址/twilio/transcribe-notify' // 转写结果回调地址,可选
    ]);
    $transcribeTaskSid = $transcription->sid; // 保存任务SID,用于后续查询结果
    
  • 第三步:获取最终转写结果
    两种方式可取回结果,优先推荐回调方式,避免轮询带来的额外请求开销:

    1. 回调模式:转写任务完成(或失败)后,Twilio会主动向你配置的statusCallback地址推送全量结果,包含完整转写文本、说话人分段、时间戳等信息,直接解析请求体即可。
    2. 轮询模式:如果不配置回调,可定期通过任务SID查询转写状态,待状态为completed时即可取回结果,参考代码:
    do {
        $taskInfo = $twilio->transcriptions($transcribeTaskSid)->fetch();
        if ($taskInfo->status === 'failed') {
            // 自行处理转写失败逻辑,比如检查音频是否损坏、语言参数是否正确
            break;
        }
        if ($taskInfo->status === 'completed') {
            $fullTranscribeText = $taskInfo->transcriptionText; // 完整转写文本
            $speakerSegments = $taskInfo->utterances; // 开启说话人分离时返回的分段内容
            break;
        }
        sleep(5); // 轮询间隔建议不短于5秒,避免触发接口限流
    } while (true);
    

补充说明:
如果你已经配置了视频录制自动同步到自有云存储,直接传入自有存储中音频文件的可访问地址(支持带签名的临时访问地址)作为mediaUrl即可,转写流程完全一致。默认录制文件在Twilio侧保留30天,可在控制台调整保留周期,注意在录音过期前发起转写任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:00:56