
twilio video 本身不提供视频通话录音的自动语音转文字(asr)功能,需将录制的音频文件(.mka 格式)下载后,交由第三方语音识别服务(如 google cloud speech-to-text 或 azure cognitive services)完成转录。
twilio video 本身不提供视频通话录音的自动语音转文字(asr)功能,需将录制的音频文件(.mka 格式)下载后,交由第三方语音识别服务(如 google cloud speech-to-text 或 azure cognitive services)完成转录。
Twilio 的 Programmable Video 支持高质量音视频录制,并将音视频流分别存储为独立轨道(例如音频为 .mka,视频为 .mkv),但其 Recording API 不内置语音识别能力。这意味着即使音频已单独存在,你也无法通过 RecordingInstance 直接调用 .transcribe() 或类似方法获取文本——该功能仅在 Programmable Voice 的 <Record> 动作或 Transcriptions REST API 中原生支持。
✅ 正确实现路径:三步完成转录
-
获取录制资源并下载音频文件
使用 RecordingInstance 获取媒体 URL,再通过 media 子资源下载原始 .mka 音频:$recording = $twilio->video->recordings($recordingSid)->fetch(); $mediaUrl = $recording->media->uri; // 返回类似 https://video.twilio.com/v1/Recordings/RT.../Media // 下载音频(需添加 Twilio 认证头) $client = new \GuzzleHttp\Client(); $response = $client->get($mediaUrl, [ 'auth' => [$accountSid, $authToken], 'sink' => '/tmp/recording.mka' ]); -
处理音频格式兼容性
Twilio 视频录音默认为 Matroska 容器(.mka),而多数 ASR 服务(如 Google Cloud Speech-to-Text)不直接支持 .mka。你有两个选择:-
✅ 推荐:使用 Twilio Compositions API 提前生成标准化音频
在录制结束后,调用 Compositions API 合成纯音频轨道(MP3/WAV):$composition = $twilio->video->compositions->create([ 'roomSid' => $roomSid, 'audioSources' => ['*'], // 或指定 track SID 'format' => 'mp3', 'statusCallback' => 'https://your.app/composition-status' ]);等待 completed 状态后,从 media_url 下载标准 MP3 文件,直接送入 ASR 服务。
-
⚠️ 或本地转码(需 ffmpeg):
ffmpeg -i recording.mka -vn -acodec libmp3lame -y output.mp3
-
-
提交至 ASR 服务并解析结果
以 Google Cloud Speech-to-Text 为例(需启用 API 并配置服务账号):use Google\Cloud\Speech\V1\SpeechClient; use Google\Cloud\Speech\V1\RecognitionConfig; use Google\Cloud\Speech\V1\RecognitionAudio; $speech = new SpeechClient(['keyFile' => 'service-account.json']); $audio = file_get_contents('/tmp/output.mp3'); $config = new RecognitionConfig([ 'encoding' => 'MP3', 'languageCode' => 'en-US', 'enableWordTimeOffsets' => false ]); $audioObj = new RecognitionAudio(['content' => $audio]); $response = $speech->recognize($config, $audioObj); foreach ($response->getResults() as $result) { echo $result->getAlternatives()[0]->getTranscript() . "\n"; }
⚠️ 关键注意事项
- Twilio 不提供视频通话的实时或异步转录接口,所有转录必须自行集成外部服务;
- 原始 .mka 文件需解复用或转换格式,避免因容器不兼容导致 ASR 失败;
- 若需高精度(如带说话人分离、标点恢复),建议选用支持 diarization 和 enhanced models 的 ASR 服务(如 Google video_2 模型或 Azure general:conversational);
- 注意合规性:确保用户已授权录音与转录,并遵循 GDPR/CCPA 等隐私法规。
通过以上流程,你即可可靠地将 Twilio 视频通话录音转化为结构化文本,支撑会议纪要、搜索索引、无障碍辅助等高级场景。

















