✅ 操作成功!

a2dp蓝牙协议

发布时间:2023-06-11 作者:admin 来源:文学

a2dp蓝牙协议

a2dp蓝牙协议

-

2023年3月2日发(作者:软件设计方法)

HFP和A2DP

引⾔

最近在车上实际测试了下御驾助⼿,当御驾助⼿通过车载蓝⽛播放⾳频时,发现⾳频质量⾮常差,实际在公司也测试到了这种情况,但是在车内的

封闭环境中尤为明显。

原因

在⽹上查阅相关⽂档,发现这个问题是由蓝⽛传输协议造成的。

蓝⽛⽿机主要有三⼤规格:HSP、HFP和A2DP。

HeadsetPro-file(HSP)代表⽿机功能,提供⼿机与⽿机之间通信所需的基本功能。

HandProfile(HFP)则代表免提功能,HFP在HSP的基础上增加了某些扩展功能。

AdvancedAudioDistributionProfile(A2DP),指的是蓝⽛⾳频传输模型协定。

HFP格式的蓝⽛⽿机⽀持⼿机功能⽐较完整,消费者可在⽿机上操作⼿机设定好的重拨、来电保留、来电拒听等免提选项

功能。

A2DP是⾼级⾳频传送规格,允许传输⽴体声⾳频信号,相⽐⽤于HSP和HFP的单声道加密,质量要好得多。

问题出现的原因就是我们的App和⽀架连接采⽤了HFP协议来进⾏⾳频传输,使⽤过⼿机免提功能的⼈应该知道就是那种⾳质。

尝试

我修改了APP和⽀架之间的传输协议为A2DP(iOS10之后的版本才⽀持蓝⽛连接采⽤A2DP),发现这次的⾳频质量就⾮常⾼,和原⾳质⼏⽆

差别。

但是,A2DP只是⼀个⾳频传输协议,它只能保证将⾳频输出切换到⽀架,⽽⾳频输⼊就⽆法采⽤⽀架的麦克风。

理想的情况应该是这样:⾳频输出采⽤A2DP来进⾏⾼质量的⾳频传输,⾳频输⼊采⽤HFP并使⽤⽀架的麦克风来进⾏采集。

我尝试上述情况的测试,发现⼆者是互相冲突的,采⽤了HFP来进⾏⾳频输⼊,那么输出就只能使⽤HFP。在苹果的官⽅⽂档有这么⼀段描述:

"IfanapplicationusesthesetPreferredInput:error:methodtoselectaBluetoothHFPinput,theoutputwill

er,selectingaBluetoothHFPoutputusing

theMPVolumeView'srore

boththeinputandoutputwillalwaysendupontheBluetoothHFPdeviceeventhoughonlytheinputor

outputwassetindividually."

核⼼的意思就是说我们如果的应⽤选择蓝⽛HFP输⼊,那么输出将⾃动更改为蓝⽛HFP输出。

我没有深⼊的研究过具体的蓝⽛通信协议,但是可以理解成HFP的输⼊和输出是成对出现的。这样,我们的理想情况就⽆法实现了。

解决办法

在⼀番尝试之后,我觉得⽬前有2种⽅案可供实⾏。

1.维持原状的⽅案,就是继续采⽤HFP来进⾏⾳频的输⼊和输出,这种⽅案可以保证输⼊⾳频由⽀架的麦克风来提供,输出继续由⽀架来进⾏转

发。但是,问题就是⼀开始测试的那样,会导致⾳乐播放的⾳质差,⽽且需要⽀架的麦克风提供降噪,提⾼语⾳识别准确率的问题。

2.采⽤A2DP来进⾏⾼质量的蓝⽛⾳频输出,保证歌曲、声⾳的播放质量,采⽤⼿机麦克风来进⾏⾳频输⼊⽽不通过蓝⽛来采集⾳频。⽬前,苹

果⼿机在这⽅⾯有⼀些优化或者优势,以苹果6为例,这款⼿机⾃带3个麦克风,正⾯顶部有⼀个麦克风专门是⽤来处理声⾳输⼊并且⾃带语⾳

降噪,我们可以在应⽤中主动切换到这个麦克风来进⾏⾳频采集。⽽且所有麦克风都⽀持设置PolarPattern(麦克风单⼀指向性),我们的这

款应⽤完全可以设置成Cardioid(⼼型)实现进⼀步的语⾳采集灵敏度和降噪优化。

总结

我更倾向采⽤第⼆种⽅案,⾳频采集的问题解决了,也不需要⽀架的麦克风去单独做降噪,⽽且输出的⾳频质量也有保证。看了其他⼚家的应⽤,

例如:咚咚这款应⽤也是这么做的。这样的话,⽀架就不需要再安装麦克风,还能节约硬件成本。

👁️ 阅读量:0