如何将 AWS Transcribe 语音识别结果按说话人分段整理为结构化文本

花韻仙語

花韻仙語

2026-07-30

977人浏览

原创

如何将 AWS Transcribe 语音识别结果按说话人分段整理为结构化文本

本文介绍一种在 laravel 中处理 aws transcribe 输出的实用方法,通过合并同说话人连续语段、对齐时间戳与词项,将原始 json 结果转换为清晰的「说话人 + 对话内容」结构化数组。

本文介绍一种在 laravel 中处理 aws transcribe 输出的实用方法,通过合并同说话人连续语段、对齐时间戳与词项,将原始 json 结果转换为清晰的「说话人 + 对话内容」结构化数组。

AWS Transcribe 的语音识别结果(尤其是启用了 Speaker Identification 的输出)默认以两个嵌套结构返回:

  • results.speaker_labels.segments:标注了每个说话人片段的起止时间及所属 speaker_label;
  • results.items:包含所有识别出的词项(words/phrases),但未直接关联 speaker,仅含 start_time 和 end_time。

由于 Transcribe 不保证 items 中每个词都携带时间戳(尤其静音或停顿处可能缺失),且 segments 中的 items 字段仅作示意、实际常为空或不完整,因此需手动对齐二者。以下 convertTextToSpeakers() 方法正是为此设计:

public function convertTextToSpeakers($response)
{
    $segments = $response['results']['speaker_labels']['segments'] ?? [];
    $items    = $response['results']['items'] ?? [];
    $result   = [];

    // Step 1: 补全缺失时间戳的 items(常见于标点或静音填充项)
    foreach ($items as $key => $item) {
        if (!isset($item['start_time']) && $key > 0) {
            $prev = $items[$key - 1];
            $items[$key] = array_merge($item, [
                'start_time' => $prev['start_time'] ?? null,
                'end_time'   => $prev['end_time'] ?? null,
            ]);
        }
    }

    // Step 2: 合并相邻且 speaker 相同的 segments(解决跨 segment 的同一说话人断续问题)
    $segments = collect($segments)->sortBy('start_time')->values()->all();
    for ($i = 0; $i filter(fn($item) => isset($item['start_time'], $item['end_time']));

    foreach (collect($segments)->sortBy('start_time') as $segment) {
        $text = '';
        $segmentItems = collect($segment['items'] ?? [])->filter(fn($si) => 
            isset($si['start_time'], $si['end_time'])
        )->sortBy('start_time');

        foreach ($segmentItems as $segItem) {
            // 精确匹配 start_time & end_time(避免因浮点精度导致漏匹配)
            $matchedWords = $itemsCollection->filter(function ($word) use ($segItem) {
                return abs((float)$word['start_time'] - (float)$segItem['start_time'])  $segment['speaker_label'] ?? 'unknown',
            'text'    => trim($text),
        ];
    }

    return $result;
}

关键优化说明

Laravel 13.2.0
Laravel 13.2.0

PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。

下载
  • 自动补全无时间戳项,防止后续匹配失败;
  • 支持相邻同 speaker segment 的递归合并,提升对话连贯性;
  • 使用浮点容差(
  • 过滤无效 content 并规范空格,确保输出文本可读性强。

⚠️ 注意事项

  • 该方法依赖 speaker_labels 和 items 均已启用(即调用 Transcribe 时设置 EnableSpeakerLabeling = true 且 OutputBucketName 或 OutputKey 配置正确);
  • 若音频信噪比低或多人重叠讲话,speaker 标签准确率会下降,建议结合业务场景做后处理校验;
  • 生产环境建议增加输入校验(如检查 $response 结构完整性)和异常兜底逻辑。

最终返回格式示例:

[
  { "speaker": "spk_0", "text": "Hello, how are you today?" },
  { "speaker": "spk_1", "text": "I'm doing well, thanks for asking." }
]

可直接用于字幕生成、会议纪要提取或对话分析系统。

相关专题

更多
墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

8

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

5

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

7

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

4

10

火山引擎域名备案流程详解
火山引擎域名备案流程详解

火山引擎域名备案适合需要在火山引擎云服务器、对象存储、CDN或网站服务上绑定域名的用户参考。本专题整理备案入口、账号实名认证、备案类型选择、主体信息填写、网站信息提交、资料上传、初审核验、管局审核和备案失败排查,帮助用户完成网站上线前的备案流程。

2026.08.04

0

10

火山引擎DNS解析配置步骤
火山引擎DNS解析配置步骤

使用火山引擎DNS解析网站域名时,需要确认域名已完成管理接入,并正确配置服务器IP、CNAME地址或验证记录。本专题整理域名添加、记录类型选择、TTL设置、解析状态检查、备案和访问测试等流程,适合新手搭建网站时参考。

2026.08.04

2

10

火山引擎对象存储使用教程
火山引擎对象存储使用教程

火山引擎对象存储适合用于网站图片、视频文件、备份数据、静态资源和应用附件管理。本专题整理TOS控制台入口、存储桶创建、地域选择、权限设置、文件上传、访问链接生成、CDN加速、费用查看和常见上传或访问失败问题,帮助用户快速掌握对象存储基础操作。

2026.08.04

1

10

火山引擎云服务器使用教程
火山引擎云服务器使用教程

火山引擎云服务器使用教程适合第一次购买、部署和管理云服务器的用户参考。本专题整理控制台入口、实例创建、地域和配置选择、系统镜像设置、安全组放行、远程连接、网站部署、续费计费和常见连接失败问题,帮助用户快速完成云服务器基础使用流程。

2026.08.04

5

10

火山引擎API Key绑定大模型教程
火山引擎API Key绑定大模型教程

火山引擎API Key怎么绑定大模型适合需要在火山方舟、应用后台、脚本工具或AI编程软件中调用模型的开发者参考。本专题整理控制台服务开通、API Key创建、模型权限检查、模型ID选择、Base URL填写、调用测试和鉴权失败排查,帮助用户完成从密钥到模型调用的配置流程。

2026.08.04

2

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 128人学习

Composer手册
Composer手册

共0课时 | 0人学习