使用 RK3399 搭载 Android 系统7.1.2,出现 AudioTrack 有时无法播放 PCM 音频

RK3399 在 Android 系统 7.1.2,出现 AudioTrack 有时无法播放 PCM 音频的问题

更新 2018-12-28 09:24:07:

瑞芯微提供了解决方案,注释部分代码即可修复这个 bug,修改如下:
文件位置:rk3399_android7.1\hardware\rockchip\audio\tinyalsa_hal\codec_config
文件名:rt5651_config.h
修改部分:

/*
	//省略前部分
	//将这一块注释掉
	{
        .ctl_name = "RT5651 ASRC Switch",
        .str_val = "Disable",
    },*/
    //这里注释结束
	{
        .ctl_name = "DAC MIXL INF1 Switch",
        .int_val = {on},
    },
//省略后部分

截图:
修改前
修改前代码

修改后截图:
修改后

注:使用AudioTrack 在一定几率下也会出现不出声,但比用自带的播放出现问题概率低,能改源码是最好的!!!


问题背景:

切换 rk3399 后,搭载系统为 Android 7.1.2,如果单独使用 audiotrack 播放 PCM 音频是没有问题,但是应用在智能家居上,一般都需要和语音识别打交道,在开启录音后,很大的几率出现播放 PCM 音频不出声,查看log日志发现在录音短暂关闭后能恢复声音播放,此时重启录音功能,能做到语音识别和 PCM 音频播放。在 4.4.4 系统没出现这个现象。
目前,RK 厂家还没有给出解决方案,不确定是否为系统驱动问题,现在只能从应用层去绕开。

问题重现
  1. 语音唤醒后(多轮交互,单轮交互会在识别后关闭录音,不在考虑范围),能识别语音,并播放PCM音频
  2. 语音唤醒后,能识别语音,但不能播放语音合成的 PCM 音频,几次交互后,还是不能播放
  3. 语音唤醒后,能识别语音,但不能播放语音合成的 PCM 音频,几次交互后,能恢复播放音频
  4. 在后台开启音乐播放(另一个APP如网易云播放歌曲),在唤醒交互,能准确播放出语音合成 PCM
问题分析
  1. 我这边测试的语音识别用的讯飞 AIUI 平台,查看源码唤醒后的录音线程等级设置为10,有可能线程争夺导致 audio 进程降级,但可能性不大。
  2. 系统问题,在启用录音后,播放器被短暂关闭。目前这个可能性最大,在语音唤起交互 PCM 无法播放出声音,此时用第三方音乐播放器同样不出声(进度条显示播放正常),多次暂停播放操作才有可能重新出声。
解决方法

很明显,在录音启动后,再通过语音合成来播放音频,失败几率太大而且不可知,你无法在应用层得知喇叭有没有出声,不出声是一个物理现象,无法监控,所以只能从问题重现的第4点来解决,在开启录音之前,先启动一个播放操作来抢占焦点,然后再开启录音,经测试能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值