开发者社区> 问答> 正文

asr有时候识别的效果很差,包括有些噪音也会被误识别为文字,有什么优化的方法吗?

asr有时候识别的效果很差,包括有些噪音也会被误识别为文字,有什么优化的方法吗?

展开
收起
d4ok5zrryskum 2022-05-17 09:54:03 2996 0
1 条回答
写回答
取消 提交回答
  • 热爱产品,专注运营,深耕市场、内容、品牌,热衷于探索科技与人类生活的内在关系,aiAI~~

    欢迎体验阿里云智能语音交互产品,支持3个月免费体验,1元即享200并发资源包尽情使用。 https://ai.aliyun.com/nls

    语音识别的原理暂且不管,我们从结果直接分析,

    一般会有哪几种识别不准的情况:

    1. 没描述,识别整体实在是太太太太差了!
    2. 识别太灵敏,无效噪音都识别出来了;
    3. 识别太不灵敏,很多声音比较小就没识别出来;
    4. 特定行业或者业务的关键词识别不出来;
    5. 遇到单字的情况识别效果一般;
    6. 远场识别效果很差。
    7. ……

    ####1.没描述,识别整体实在是太太太太差了! 一般来说,ASR模型识别率均有一定的保证。如果在所有情况下语音识别都不准确,或者识别率很低,往往需要整体考虑是否有什么地方配置错误,例如实际语音的采样率(在线识别场景ASR只支持8k 16bit或者16k 16bit)、调用时设置的采样率参数(8000或者16000)、ASR服务端模型(8k或者16k),这三者需要保持一致。

    注意 如果是公共云ASR调用,需要确认阿里云控制台上该appkey所选择的模型采样率。

    ####2. 识别太灵敏,无效噪音都识别出来了 可以通过设定参数speech_noise_threshold的值来修改VAD噪声阈值。

    speech_noise_threshold参数区间是[-1,1],取值越小越灵敏,可能会有更多噪音被当成语音被误识别;取值越大,可能更多语音段会被当成噪音而没有被识别。例如设为0.6,如果仍觉得太灵敏,可以继续尝试设置为0.7。如果发现有丢字、漏识别,需要将该值调小,例如0.5、0.2甚至是-0.2等。

    代码示例:

    Java

    transcriber.addCustomedParam("speech_noise_threshold", -0.1);
    C++

    request->setPayloadParam("speech_noise_threshold",-0.1);

    ####3. 识别太不灵敏,很多声音比较小就没识别出来 同上

    ####4. 特定行业或者业务的关键词识别不出来

    阿里云语音识别模型主要是根据通用语料来训练的,如果涉及到特定行业或领域关键词,可以按照以下几种方式优化:

    热词和自学习等等的介绍.png

    "点击这里体验热词&类热词 点击这里体验自学习模型 公共云以上功能永久免费;声学模型定制请私聊管理员"

    ####5. 遇到单字的情况识别效果一般 因为单字发音单元短,且没有上下文语义,所以单字的识别是难点,添加热词效果不一定好,建议采用定制化模型优化。您可以提交工单,将识别差的样例及语音(badcase)提供给技术人员,我们分析后会给您提供针对性建议。

    ####6. 远场识别效果很差 这是因为远、近场的VAD阈值不一样,建议调节参数speech_noise_threshold。speech_noise_threshold参数区间是[-1,1],取值越小越灵敏,可能会有更多噪音被当成语音被误识别;取值越大,可能更多语音段会被当成噪音而没有被识别。例如设为-0.2,如果丢字现象仍然比较严重,可以继续调小至如-0.3、-0.4;如果发现较多噪声被误识别了,也可以适当调大,例如-0.1、0等。

    2022-05-24 19:33:34
    赞同 展开评论 打赏
问答分类:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
140-弱监督机器学...1506573734.pdf 立即下载
机器学习在恶意样本检测方面 的实践之路 立即下载
机器学习在恶意样本检测方面的实践之路 立即下载