随着人工智能的发展,语音识别和语义理解技术日益趋近成熟,
达到商用水平。在机顶盒领域,智能语音遥控器已成为标配,实现方
案很多,其中一种讨论如下
一、语音数据(二进制 PCM 流)
应用层 APK:
应用层 APK 程序利用 AudioRecorder 或 MediaRecorder 接口,直
接从安卓系统麦克风处读取,如:
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate,
CHANNEL_CONFIG, AUDIO_FORMAT, min);
SampleRate = 16000;
系统 Rom:
机顶盒系统 Rom 需要集成遥控器厂家提供相应 so 库或蓝牙、语音
方面的标准库文件,底层库上报数据给 AudioFlinger,再转发至
AudioRecorder。
因各家遥控器厂商的 Audio Hal 层 so 库会有些许差异,最好机顶
盒厂商与遥控器厂商联调。
二、语音按键
关于遥控器语音键,较为简单的方式是 Broadcast 广播方案:
系统在安卓 framework 层监听所有按键的 code,如果是语音键,
则发送一个广播出来:
按下是:net.sunniwell.action.VOICE_KEY_PRESS_DOWN
抬起是:net.sunniwell.action.VOICE_KEY_PRESS_UP
应用层 apk 通过注册广播接收器 BroadcastReceiver 获取语音键按
下和抬起的动作。
接收广播后,取 intent.getIntExtra("keyCode", 0)这个按键信息,如
果是 142,则确认为蓝牙状态语音按键。
String action = intent.getAction();
int code = intent.getIntExtra("keyCode", 0);