十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

智能座舱语音测试实战:唤醒率、方言识别与自动化测试的完整指南

智能座舱语音测试实战:唤醒率、方言识别与自动化测试的完整指南 智能座舱的语音交互这两年几乎成了新车型的标配卖点。但真正做过这块测试的人都知道语音测试是所有车载测试模块里最容易看起来测完了、实际上漏一堆的领域。唤醒率跑个几百次觉得数据不错方言场景随便找两个同事念几句就算覆盖多音区、连续对话、噪声环境这些真正让用户骂娘的场景反而没测透。我在几个量产项目里踩过的坑基本都集中在测试场景设计不完整和判定标准太粗糙这两件事上。这篇内容面向的是刚接触智能座舱语音测试的工程师以及做了一段时间但总觉得覆盖不全、线上问题频发的测试负责人。我会把唤醒率、方言识别、多音区、连续对话、噪声鲁棒性这些核心场景拆开讲说清楚每个场景为什么容易漏、怎么设计用例、判定标准怎么定以及自动化能帮上什么忙、帮不上什么忙。关键词覆盖智能座舱、语音测试、唤醒率、方言识别、自动化测试内容偏实操不堆概念。1. 唤醒率测试为什么总是虚高唤醒率是语音测试里最常被拿出来汇报的指标也是最容易做出漂亮数字的指标。问题在于很多团队测的唤醒率和用户实际感受到的唤醒体验根本不是一个东西。1.1 唤醒率的定义陷阱你测的到底是哪个唤醒率先明确一件事唤醒率不是一个单一指标。它至少可以拆成三个维度——单次唤醒成功率、连续唤醒稳定性、误唤醒率。很多团队只测第一个汇报的时候也只报第一个结果用户投诉的是后两个。单次唤醒成功率指的是在安静环境下、标准发音、正常距离喊一声唤醒词能成功的比例。这个数字通常很好看95%以上很常见。但它几乎没有工程价值因为用户不会在消音室里用标准普通话喊唤醒词。连续唤醒稳定性指的是在已经唤醒过一次之后短时间内再次唤醒的成功率。这里有个很隐蔽的问题很多车机在首次唤醒后麦克风增益或者降噪策略会发生变化导致第二次唤醒明显变难。我遇到过一台车首次唤醒率97%但连续唤醒第三次开始掉到70%以下。这个场景用户天天遇到——导航中途想换个目的地喊第二遍没反应体验直接崩。误唤醒率指的是没有喊唤醒词但系统被误触发的比例。这个指标很多团队根本不测或者只在实验室测。但误唤醒是用户最烦的问题之一车里正常聊天、放音乐、导航播报突然把语音助手叫出来了这种体验比唤不醒还糟糕。提示汇报唤醒率时必须同时给出单次、连续、误唤醒三个数字只报单次唤醒率等于没测。1.2 测试距离和角度的矩阵设计唤醒率对距离和角度极其敏感但很多团队的测试只测主驾正常坐姿、正对麦克风这一个点。这个点当然要测但它只是矩阵里的一个格子。合理的测试矩阵至少包含这几个维度维度取值说明距离30cm / 50cm / 80cm / 120cm覆盖贴近说话到后排说话角度正对 / 偏左30° / 偏右30° / 偏后覆盖扭头、侧身场景声压级55dB / 65dB / 75dB覆盖安静到嘈杂发音标准 / 偏快 / 偏慢 / 含糊覆盖不同说话习惯这个矩阵全跑一遍是4×4×3×4192个组合每个组合至少测10次接近2000次唤醒。听起来多但如果用自动化工具跑其实很快。关键是矩阵要设计对而不是随便测几个点。我自己的经验是距离和角度这两个维度最容易暴露问题。很多车机的麦克风阵列在偏后位置比如后排乘客说话唤醒率断崖式下跌因为波束成形的主瓣根本没对准后排。这个场景在家庭用车里非常常见——后排小孩想跟车机说话喊半天没反应。1.3 唤醒词本身的测试盲区唤醒词的设计和测试也有讲究。大部分车机用的是四字唤醒词比如你好XX这种结构。测试的时候要注意几个点第一唤醒词的音节边界。有些唤醒词在连续说话时容易被切分错比如用户说你好我想问一下如果你好后面紧跟的内容影响了端点检测唤醒可能失败。测试时要专门设计唤醒词紧接内容的用例。第二近音词误唤醒。唤醒词和日常用语发音接近时误唤醒率会飙升。这个必须专门测方法是把唤醒词的近音词列出来在正常对话中反复出现看系统会不会误触发。第三唤醒词的语速容忍度。用户说话有快有慢唤醒词在快语速下可能被压缩得识别不出来。测试时要覆盖0.8倍速到1.5倍速的范围。1.4 唤醒率测试的自动化实现思路唤醒率测试是自动化收益最高的场景之一因为它是高度重复的。核心思路是用音频播放设备自动化控制来替代人工喊话。具体做法是把测试音频可以用TTS生成也可以真人录制通过扬声器在指定位置播放同时用自动化脚本控制车机状态、记录唤醒结果。难点在于播放设备和车机的同步——你需要精确知道什么时候播放了音频、什么时候车机应该响应。我见过比较成熟的方案是用带时间戳的音频文件播放端和车机端都记录时间戳事后对齐。这样能算出唤醒延迟而不仅仅是成功/失败。唤醒延迟这个指标也很重要用户喊完等1秒才响应和等0.3秒响应体验差别很大。自动化跑唤醒率的时候有个坑扬声器的频响特性会影响结果。便宜的扬声器低频衰减严重而人声的基频主要在低频段导致播放出来的音频和真人说话差异很大。建议用频响平坦的监听音箱或者至少做一次频响校准。2. 方言识别最容易糊弄也最容易翻车的场景方言识别是智能座舱语音测试里最容易被象征性覆盖的场景。很多团队的做法是找一两个会说方言的同事念几句固定话术过了就算覆盖了。这种测法的问题在于方言的多样性远超想象而且用户对方言识别的容忍度很低——说方言没识别出来用户会直接认为这车机不行。2.1 方言测试的语料设计别再用固定话术了固定话术的问题是它不能反映真实使用。用户说方言的时候说的是自己日常要表达的内容不是打开空调这种标准指令。所以方言测试的语料必须贴近真实使用场景。我的做法是分三层设计语料第一层是高频指令的方言表达。比如打开空调在不同方言里有不同说法有的地方说开冷气有的说开空调有的说把空调开起。这一层测的是方言词汇的覆盖。第二层是带口音的普通话。很多用户说的是方言腔调的普通话不是纯方言。这种混合形态反而更难识别因为声学模型和语言模型都要处理。这一层测的是口音鲁棒性。第三层是方言自由说。给测试人员一个场景比如你想去某个地方但不知道怎么走让他们用方言自由表达看系统能不能理解意图。这一层测的是真实可用性。三层语料的难度是递增的很多车机能过第一层第二层就开始掉第三层基本崩。但用户真实使用中第三层才是常态。2.2 方言覆盖的地域选择逻辑中国方言种类太多不可能全测。选择覆盖哪些方言要有逻辑。我的建议是按用户基数方言差异度两个维度来选。用户基数大的方言优先比如西南官话、粤语、吴语、闽南语这些。方言差异度大的也要覆盖因为差异度大意味着声学特征差异大对模型的挑战更大。具体到测试执行每个方言至少要有2-3个不同发音人因为同一种方言不同人的口音也有差异。发音人最好覆盖不同年龄和性别因为声学特征差异明显。方言区代表方言测试优先级主要挑战官话区西南官话、中原官话高用户基数大口音变体多粤语区粤语高声调系统差异大吴语区上海话、苏州话中高连读变调复杂闽语区闽南语、闽东语中与普通话差异极大其他客家话、湘语等中低用户相对分散2.3 方言识别的判定标准怎么定方言识别的判定比普通话复杂因为识别正确的定义本身就有歧义。用户说方言系统是用方言回应还是用普通话回应识别的是字面内容还是意图我的经验是判定标准要分识别层和意图层两层来看。识别层看的是语音转文字的结果对不对意图层看的是系统执行的动作对不对。很多车机识别层勉强能过但意图层经常理解错因为方言的表达习惯和普通话不同。比如用户用方言说有点热意图是调低空调温度但如果系统只做了字面识别可能理解成查询温度。这种意图层的错误比识别层的错误更影响体验。判定的时候还要注意部分正确的情况。用户说了一长串方言系统只识别出了关键词算不算成功我的做法是设定一个阈值比如关键信息识别正确率达到80%就算通过低于这个就算失败。这个阈值要根据具体指令的复杂度调整。2.4 方言测试的自动化困境说实话方言测试是自动化最难覆盖的场景之一。原因是方言语料的获取和标注成本很高而且方言的声学特征差异大TTS合成的方言音频质量普遍不如真人录音。目前比较可行的自动化方案是半自动化用真人录制的方言语料库通过自动化播放设备执行测试但语料库的建设和更新还是靠人工。完全用TTS生成方言语料目前效果还不够好尤其是声调和连读变调这些特征合成音频经常失真。如果团队预算有限我的建议是方言测试先做半自动化把精力放在语料库建设上。语料库的质量决定了方言测试的质量这个投入是值得的。3. 多音区与声源定位被低估的测试重灾区多音区识别是近几年智能座舱的重点功能主驾、副驾、后排各自独立拾音谁说话就响应谁。这个功能听起来简单实际测试起来问题非常多而且很多问题是偶发的特别难复现。3.1 多音区测试的核心场景拆解多音区测试不能只测主驾说话主驾响应这种基本场景要覆盖各种交叉和干扰情况。我整理了几个必须测的场景场景一单音区独立唤醒。每个座位单独说话验证对应音区能正确唤醒。这是基础但要注意测试时其他座位不能有噪声。场景二多音区同时说话。两个或以上座位同时说话验证系统能不能正确区分并分别响应。这个场景在实际使用中很常见比如主驾和副驾同时聊天。场景三跨音区指令。主驾说打开后排空调验证系统能不能正确理解跨音区的指令。这个涉及意图理解和音区绑定的配合。场景四音区串扰。一个座位说话另一个座位的麦克风也拾到了音验证系统会不会误判音区。这个是最容易出问题的场景。场景五移动声源。说话人在车内移动比如扭头、侧身验证声源定位能不能跟上。3.2 声源定位精度的测试方法声源定位精度是多音区的核心指标但很多团队不知道怎么测。我的做法是用角度误差来量化。具体方法是在车内不同位置、不同角度播放测试音频记录系统判定的声源角度和实际角度对比算误差。一般来说误差在±15°以内算合格±30°以上就会导致音区误判。测试的时候要注意声源定位精度受混响影响很大。车内的声学环境是典型的混响环境玻璃、座椅、顶棚都会反射声音。同一个位置不同车型的混响特性不同定位精度也会不同。所以测试必须在目标车型的实际车内环境做不能用实验室环境替代。3.3 多音区测试的偶发问题排查多音区测试最头疼的是偶发问题。同一个场景测10次可能只有1次失败而且复现不出来。这种问题往往和时序有关。我遇到过一个典型案例主驾和副驾几乎同时说话系统有时候能正确区分有时候会把两个人的话混在一起。排查了很久才发现问题出在端点检测的时序窗口上——两个人的语音起始时间差在某个特定范围内时端点检测会把两段语音合并成一段。排查这类问题的关键是记录完整的时序数据。不能只记录成功/失败要记录每次测试的音频起始时间、系统响应时间、音区判定结果。有了这些数据才能分析出偶发问题的规律。提示多音区偶发问题排查一定要保留原始音频和时序日志否则复现都复现不了。3.4 多音区自动化测试的可行性多音区测试的自动化程度可以做得比较高因为它的测试场景是结构化的。核心是用多通道音频播放系统在每个座位位置放置独立的扬声器通过自动化脚本控制播放时序。难点在于扬声器的布置和校准。每个座位的扬声器位置要模拟真人说话的位置嘴部高度、朝向而且多个扬声器之间的同步要精确到毫秒级。这个硬件成本不低但如果测试量大长期看是划算的。自动化能覆盖的是标准场景但偶发问题的复现还是需要人工介入。我的建议是自动化跑常规回归人工专门攻偶发问题两者配合。4. 连续对话与上下文理解测试用例设计的深水区连续对话是智能座舱语音的高阶功能用户不用每次都说唤醒词可以连续提问。这个功能的测试难度比单轮对话高一个量级因为要测的不只是单次识别还有上下文的理解和保持。4.1 连续对话的测试维度连续对话的测试要覆盖这几个维度上下文保持时长。系统能记住上下文多久5秒、10秒、30秒超过时长后上下文丢失用户需要重新说唤醒词。这个时长要测出来并且验证是否符合设计预期。上下文切换。用户在连续对话中切换话题系统能不能正确切换上下文比如先说导航再说音乐系统不能把音乐指令当成导航指令。打断处理。用户在系统播报过程中打断系统能不能正确停止播报并响应新指令这个场景用户经常用但很多车机处理得不好。多轮指令的累积。比如用户说导航到A地然后说途经B地再说避开高速系统能不能把这些指令累积起来这个测的是上下文的状态管理。4.2 上下文理解的边界条件测试连续对话最容易出问题的地方是边界条件。我列几个必须测的上下文刚好在超时边缘时系统怎么处理连续对话中插入无关内容比如车内其他人说话系统会不会误当成指令连续对话中用户沉默超过阈值系统是保持还是退出连续对话中系统播报被噪声打断上下文还保持吗这些边界条件在正常测试中很容易被忽略但用户实际使用中经常触发。尤其是插入无关内容这个场景车内多人聊天时太常见了。4.3 连续对话测试的用例组织方式连续对话的测试用例不能像单轮对话那样一条一条列要用对话流的方式组织。一个对话流包含多轮交互每轮之间有依赖关系。我的做法是用类似脚本的方式描述对话流轮次1: 用户说导航到人民广场 - 期望: 系统确认并开始导航 轮次2: 用户说途经加油站 - 期望: 系统添加途经点 轮次3: 用户说避开拥堵 - 期望: 系统重新规划路线 轮次4: 用户沉默15秒 - 期望: 系统提示是否继续 轮次5: 用户说继续 - 期望: 系统保持导航状态这种对话流的测试判定不能只看单轮要看整个流程的状态是否正确。测试的时候要记录每一轮的系统状态事后分析状态转移是否符合预期。4.4 连续对话自动化的挑战连续对话的自动化比单轮对话难因为涉及状态保持和时序控制。自动化脚本需要能够查询系统状态并且在正确的时机发送下一轮指令。目前比较可行的方案是用状态机驱动的自动化框架。每个对话流定义成一个状态机自动化脚本根据系统状态决定下一步动作。这个框架的开发成本不低但对于连续对话这种复杂场景是值得投入的。如果暂时没有状态机框架退而求其次的方案是用固定时序的脚本但要注意留足系统响应时间否则会因为时序问题导致误判。5. 噪声环境下的语音鲁棒性测试车内噪声是语音交互的天敌。发动机噪声、风噪、胎噪、空调噪声、音乐声、乘客说话声这些噪声叠加在一起对语音识别的挑战非常大。噪声测试是语音测试里最接近真实使用场景的部分但很多团队测得很粗糙。5.1 车内噪声的构成与测试场景设计车内噪声不是单一噪声是多种噪声的叠加。测试的时候要分场景设计怠速噪声。发动机怠速时的低频噪声主要影响低频段的语音识别。高速风噪和胎噪。高速行驶时的主要噪声源频谱较宽对中高频影响大。空调噪声。空调风量最大时噪声明显尤其是高风速档。音乐噪声。用户放音乐时的噪声这个场景很常见但很多团队不测。多人说话噪声。车内多人聊天时的背景人声这个对语音识别的干扰最大因为人声和指令的声学特征接近。测试的时候这些噪声要组合起来测不能只测单一噪声。真实场景是多种噪声叠加的单一噪声下表现好不代表组合噪声下表现好。5.2 噪声测试的量化方法噪声测试不能只定性说噪声大时识别率下降要量化。核心指标是**信噪比SNR**和对应的识别率。具体做法是在控制噪声声压级的情况下测不同信噪比下的识别率。比如噪声65dB时用户说话声压级75dB信噪比10dB测这个条件下的识别率。然后逐步降低信噪比看识别率的变化曲线。这个曲线能直观反映系统的噪声鲁棒性。一般来说信噪比低于5dB时识别率会明显下降。但不同系统的拐点不同测试的目的就是找到这个拐点。噪声场景噪声声压级典型信噪比测试重点怠速45-55dB15-20dB低频噪声影响城市道路60-70dB8-12dB综合噪声高速70-80dB5-10dB风噪胎噪音乐聊天70-85dB3-8dB人声干扰5.3 噪声测试的常见误区噪声测试有几个常见误区我踩过误区一只在实验室测。实验室的噪声是播放的和真实车内噪声的频谱特性差异很大。真实车内的噪声有特定的频谱分布播放的噪声很难完全模拟。所以噪声测试最好在实车上做或者至少用实车录制的噪声。误区二只测稳态噪声。真实噪声是变化的加速时噪声增大减速时减小。稳态噪声下表现好不代表变化噪声下表现好。误区三忽略噪声对唤醒的影响。很多团队测噪声下的识别率但不测噪声下的唤醒率。实际上噪声对唤醒的影响更大因为唤醒需要持续检测噪声容易导致误唤醒或漏唤醒。5.4 噪声测试的自动化方案噪声测试的自动化相对成熟因为噪声可以用音频文件播放测试流程也相对固定。核心是噪声播放语音播放结果记录的同步。我的方案是用多通道音频系统一路播放噪声一路播放测试语音通过自动化脚本控制时序和声压级。声压级要用校准过的声级计实时监测确保测试条件一致。自动化跑噪声测试的时候要注意扬声器的非线性失真会影响结果。噪声播放的声压级较高时扬声器可能产生失真导致噪声频谱改变。建议用大功率的监听音箱并且定期校准。6. 语音测试自动化的能与不能聊了这么多场景最后说说自动化。语音测试的自动化程度直接决定了测试覆盖率和回归效率。但自动化不是万能的哪些能自动化、哪些不能要有清醒的认识。6.1 适合自动化的语音测试场景唤醒率测试是最适合自动化的因为它是高度重复的而且判定标准明确成功/失败。用音频播放设备自动化脚本可以轻松跑几千次。固定指令的识别测试也适合自动化。指令集固定语料固定判定标准明确自动化收益很高。噪声环境下的识别测试适合自动化因为噪声和语音都可以用音频文件播放测试条件容易控制。回归测试是自动化的核心价值所在。每次软件更新后跑一遍自动化回归能快速发现退化。6.2 难以自动化的语音测试场景方言测试难以完全自动化因为方言语料库的建设成本高TTS合成的方言质量不够好。连续对话测试难以自动化因为涉及状态保持和时序控制需要状态机框架支持。偶发问题复现难以自动化因为偶发问题往往和特定时序、特定环境相关自动化脚本很难精确复现。主观体验测试无法自动化。语音交互的体验有很多主观因素比如响应速度的感觉、语音音色的自然度这些只能人工评估。6.3 自动化测试框架的选型思路语音测试的自动化框架和常规的UI自动化框架比如Appium、Selenium思路不同。语音测试的核心是音频的播放和采集以及时序的精确控制。我的建议是自建框架而不是套用现成的UI自动化框架。核心模块包括音频播放模块支持多通道、精确时序控制、声压级校准音频采集模块录制系统响应用于事后分析车机控制模块控制车机状态、查询系统状态结果判定模块根据识别结果和预期对比判定成功/失败报告生成模块生成测试报告包含成功率、延迟等指标这个框架的开发成本不低但一旦建成语音测试的效率会有质的提升。如果团队刚开始做可以先从唤醒率自动化入手逐步扩展。6.4 自动化测试的维护成本自动化测试不是建好就一劳永逸的维护成本很高。语音测试的自动化尤其如此因为车机软件更新后接口可能变化自动化脚本要跟着改测试语料需要定期更新尤其是方言和噪声语料硬件设备扬声器、麦克风会老化需要定期校准我的经验是自动化测试的维护成本大约是开发成本的30%-50%每年。这个成本要在立项的时候就考虑进去否则自动化测试会慢慢荒废。7. 一些实测中总结的判定标准参考最后分享一些我在实际项目中总结的判定标准供参考。这些标准不是绝对的要根据具体车型和产品定位调整。测试项合格标准优秀标准备注单次唤醒率≥95%≥98%安静环境标准发音连续唤醒率≥90%≥95%连续3次唤醒误唤醒率≤1次/小时≤0.5次/小时正常对话场景唤醒延迟≤800ms≤500ms从说完唤醒词到响应方言识别率≥80%≥90%主要方言区噪声识别率≥85%≥92%信噪比10dB多音区准确率≥90%≥95%单音区独立唤醒连续对话保持≥10秒≥30秒上下文保持时长这些数字看起来简单但每一项背后都需要大量的测试数据支撑。尤其是误唤醒率需要长时间的路测数据才能统计准确。我在实际项目里最大的体会是语音测试的坑不在于技术难度而在于场景设计的完整性。技术手段再先进如果测试场景漏了问题照样会流到用户手里。所以每次设计测试用例的时候我都会问自己一句用户在实际使用中还有哪些情况是我没考虑到的这个问题问多了测试覆盖自然就上来了。另外一个小技巧建立用户反馈驱动的测试用例库。每次线上收到语音相关的用户反馈就把它转化成一条测试用例补充到用例库里。这样用例库会越来越贴近真实使用而不是靠测试人员拍脑袋想。这个习惯坚持下来语音测试的漏测率会明显下降。
返回列表