Anaconda HashMap 深度图像 5G ruby events encryption video keras oracle分页关键字 java数据分析 java多行注释 spring源码下载 python解析json数据 python中的range函数 python中的join函数 python返回函数 python安装程序 java开发 java8特性 javafinally java初级教程 java连接mysql数据库 java时间戳转换日期格式 java中long tar文件怎么打开 python封装 kmservice 刷声望 安卓刷机精灵 html5下载 lol语音包 压枪软件 pr加速视频 密码翻译 目标聚光灯 igfxtray 冬青黑体简体中文 小米开发者选项 bat转exe
当前位置: 首页 > 学习教程  > 

蓝牙语音通话的实现——音频基础概念

2020/10/16 17:47:52 文章标签: pcm接口

前段时间调试蓝牙语音通话功能,下面做个总结。 环境:iMX6q平台RTL8723bu模块,PCM接口,Android4.4.2系统 一. 音频基础 &#xff08…

前段时间调试蓝牙语音通话功能,下面做个总结。

环境:iMX6q平台+RTL8723bu模块,PCM接口,Android4.4.2系统                                                                                        

一. 音频基础

(1).PCM概念

就音频领域而言,PCM脉冲编码调制是Pulse Code Modulation的缩写。是一种将模拟音频信号转换为数字信号的编码方式之一。在实际中,PCM概念被扩大了,从不同角度有不同解释。从接口角度讲,PCM是一种总线接口,其他接口还有i2S,AC97等。从数据格式角度讲,PCM又是一种数据格式,其他格式还有mp3,wav等。为什么蓝牙语音一般用PCM接口?在这篇文章中加以解释https://blog.csdn.net/BHJ1119/article/details/51888615。

(2).PCM总线

 

包括4根信号线:FSYNC(同步)/PCLK(时钟)/DTX(发送)/DRX(接收)。PCM分为Master和Slave两种模式。Master提供PCLK及FSYNC。

PCLK是时钟信号,速率一般为128KHz到8.192MHz,每一个PCLK对应一位DTX/DRX的数据。

FSYNC为帧同步信号,其频率为PCM采样频率,一般为8KHz。一个帧同步信号的上升沿代表一帧(frame)数据的开始,一帧数据中分为若干个时隙(time slot),时隙对应channel。

DRX/DTX为数据收发。

(3)PCM数据格式

将模拟音频信号转换为数字信号时涉及到两个概念:

采样率:指每秒钟取得声音样本的次数,一般有8KHz,16KHz,22.05KHz,44.1KHz,48KHz。

采样位数:它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。在计算机中采样位数一般有8位和16位之分。8位不是说把纵坐标分成8份,而是分成2的8次方即256份; 同理16位是把纵坐标分成2的16次方65536份。                                                                                                        

另一个概念是声道数:有单声道和双声道之分,单声道一般就是一个喇叭发声(接多个喇叭时每个喇叭所发出的声音是完全一样的,也就是同一份音频数据),双声道(也就是立体声)一般是两个喇叭同时发声,但有时候两个喇叭发出的声音不一样,比如播放汽车从身边经过的声音时,左声道先发声,右声道后发声,从听感上模拟汽车由近及远的过程,达到立体声的效果。

PCM数据格式有A-law(A率)/mu-law(U率)/linear(线性)三种,其中A-law/mu-law每个采样用8bit编码,即每个同步信号中需要传输8bit的数据,速率为8KHz*8bit=64kbit/s。而linear每个采样16bit编码,每个同步信号中传输16bit数据,速率为8KHz*16bit=128kbit/s

例如,PCLK为512KHz,FSYNC为8KHz,那么每个FSYNC能传输512/8=64位数据,假如使用16位线性PCM编码,那么一个同步信号能传输64/16=4个timeslot的数据,即4个channel。

线性PCM编码一个采样传输16bit数据,每个采样占0.125ms,20ms为一帧语音数据,包括160个采样,即160*16bit=320Byte数据。那么,我们就能够得到PCM文件所占容量的公式:存储量 = (采样频率*采样位数*声道)*时间/8(单位:字节数)                           

未完待续......

 

 

 

 


本文链接: http://www.dtmao.cc/news_show_300140.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?