语音

语音

声音作为一种机械波,其基本物理属性是频率和振幅。频率指振动的快慢。振幅是指声波在某个位置上的瞬时强弱。有时候,人们用音高、音质和音强来描述声音的基本特征。实际上,这三个特征都归结为频率和振幅这两个基本属性。其中音高、音质与频率相关。

所谓分贝,是指两个相同的物理量(例A1A0)之比取以10为底的对数并乘以20(或10),即N = 20lg(A1/A0) 。通常,我们以20微帕斯卡(μPa)为基准值来度量其他声音的强弱,例如,火箭发射时产生的声音压力是2000帕斯卡,因此,其分贝值就是log20(2000/20x10-6),即160分贝。

 

采样频率:单位时间内采集的样本数,是采样周期的倒数。

常见的一些采样频率:CD-Audio 采样频率为44.1kHz,一般网络和移动通信采样的音频采样率为8KHz

量化深度:表示一个样本的二进制的位数,即样本的比特数。一般的网络音频(移动通信)应用采用了8位的量化深度,CD音频的量化深度则是16比特,而有些高级数字音频系统采用了32位的量化深度。

总之,采样是时间上的离散化,而量化则是空间上的离散化。

 

编码:PCM编码,增量调制编码

PCM编码(脉冲编码调制)的量化分为两种:一种是均匀量化(又称为线性量化),另一种称为非均匀量化(非线性量化)

均匀量化如下图

 

业界广泛采用了两种非均匀量化,一种称为μ律压扩(μ-Law)技术,另一种称为A律压扩(A-Law)技术。

增量调制编码

连续的1表示信号在上升,每次上升一个Δ;连续的0表示信号在下降,每次下降一个Δ;在信号的平缓部分,编码输出表现为01的交错,即数字化信号以阶跃Δ的大小上下起伏,用以记录模拟波形的平缓变化(对DM编码来说只能这样做)。

 

WAVE波形音频文件

WAVE文件,又称波形音频文件,是一种最为重要的用于存储PCM编码的数字音频数据的文件。WAVE文件作为多媒体应用中广泛使用的声波文件格式之一,是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,一个WAVE文件的最开头四个字节便是"RIFF"WAVE文件是由若干个Chunk(可以翻译为块)组成的。按照在文件中的出现位置,它们分别是RIFF WAVE ChunkFormat ChunkFact Chunk(可选)和Data Chunk。这四个块(Chunk)的排列方式如图4-1所示。

RIFF WAVE Chunk

ID = 'RIFF'

RiffType = 'WAVE'

Format Chunk ID = 'fmt '

Fact Chunk(optional) ID = 'fact'

Data Chunk ID = 'data'

 

除了Fact Chunk外,其他三个Chunk是必须具有的。我们看到,每个Chunk有各自的ID,均位于Chunk最开始的位置。ID作为标识,均为4个字节,实际上是4个字符,如"RIFF"。这4个字符合在一起被称为"四字符码"Four Character CodeFCC)。用"四字符码"作块ID,是RIFF文件的重要特点。紧跟在ID后面的是Chunk大小(注意,实际上是去除IDSize所占的字节数后剩下的其他字节数)4个字节,其中低字节表示数值低位,高字节表示数值高位。

下面具体介绍各个Chunk的内容。所有数值表示均为低字节表示低位,高字节表示高位。

RIFF WAVE Chunk

"RIFF"作为标识,然后紧跟着为size字段,该size是整个wav文件大小减去IDSize所占用的字节数,即FileLen - 8 = Size然后是Type字段,为'WAVE',表示是wav文件。

字段名称

所占字节数

具体内容

ID

4 Bytes

"RIFF"

Size

4 Bytes

由数据决定

Type

4 Bytes

"WAVE"

 

Data Chunk

Data Chunk 是真正保存 wav 数据的地方,以'data'作为该 Chunk 的标示。然后是数据的大小。紧接着就是 wav 数据。

 

 

字段名称

所占字节数

具体内容

ID

4 Bytes

'data'

Size

4 Bytes

音频数据的大小

data

最大不超过 size 所能表示的字节数

音频数据,是文件的主体

根据 Format Chunk 中的声道数以及采样 bit 数,wav 数据的 bit 位置可以分成以下 4 种形式

单声道

8bit 量化

样本 1

样本 2

样本 3

样本 4

声道 0(左)

声道 0(左)

声道 0(左)

声道 0(左)

双声道

8bit 量化

样本 1

样本 2

声道 0(左)

声道 1()

声道 0(左)

声道 1()

单声道

16bit 量化

样本 1

样本 2

声道 0(左)

(低位字节)

声道 0(左)

(高位字节)

声道 0(左)

(低位字节)

声道 0(左)

(高位字节)

双声道

16bit 量化

样本 1

声道 0(左)

(低位字节)

声道 0(左)

(高位字节)

声道 1(右)

(低位字节)

声道 1(右)

(高位字节)

双声道

将转码输出配置为未压缩的PCM格式音频,

即采样频率为44.1kHz、量化深度为16bits、双声道的波形音频,那么,缓冲区中的音频数据将按图4-39所示的方式排列。

 

样本 1

  

样本 2

 

左声道低位字节

左声道高位字节

右声道低位字节

右声道高位字节

左声道低位字节

左声道高位字节

右声道低位字节

右声道高位字节

现在我们利用pAudioData指针来做一项实验,即利用指针pAudioData,将输出PCM音频的左声道字节全部改写为0。这样,读者播放输出音频文件,将只能听到右声道的声音。这项实验有助于读者理解左右声道的概念。

混声

采取创建多个Media Session的技术路线即可实现上述目标。图4-26描述了多Media Session播放多音频文件的基本原理

我们利用三个Media Session同时启动三个音频文件的播放,三个声音都能够被听到。实际上,最后听到的声音,是一个混合后的声音,这是通过硬件(声卡)混声器(Mixture)实现的。需要指出的是,上述多音频文件播放的基本原理,正是游戏、动画等多媒体应用中的基本技术。理解这一点非常有用,读者今后完全可以利用该方法尝试开发类似的应用。

 

 

音频信号的三种编码方式

波形编码,参数编码,混合编码

 
 
 
1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值