“声音”背后的原理(3):音频信号处理的基础概念和流程小结

基础概念

  1. 如何理解音频帧?一帧的时长是多少?
  2. 如何理解采样个数和采样率?

下面通过关于MP3的一些信息来理解这些概念。

  • ① “每一帧的采样个数,是 1152
  • ② “采样率 44100 Hz
  • 所以MP3帧的时长是 26ms

理解和结论:

(1)采样率

  • 采样率是每秒钟的采样次数,如44.1kHz,就是说不管哪种波形,有序如正余弦,无序如不规则波形,每秒内采样都是441000次。
  • 采样率越大,越接近原始波形,越不失真。但是采样次数越多,数据自然越大,网络要考虑存储大小的和宽带的,在人耳听力范围内有一定大小的采样率就可以了,合适才是真理。

(2)(一帧)采样个数
(一帧)采样个数:number of audio samples (per channel) described by this frame,就是一帧数据里面有多少个采样(样本),或者说 sample。

对于 MP3 ,1152个 sample 就是一帧,播放 1152 个 sample ,即 1 frame 需要的时间就是 1152/44.1k 大约为 26ms

Matlab语音信号处理程序-f11.m 可以对语音信号的单个字,词进行频率及过零率分析 clc [filename,pathname]=uigetfile; [x,Fs]=wavread; %幅度归一化到[-1,1] x = double; x = x / max); %常数设置 FrameLen = 240; FrameInc = 80; amp1 = 10; amp2 = 2; zcr1 = 10; zcr2 = 5; maxsilence = 3;  % 6*10ms  = 30ms minlen  = 15;    % 15*10ms = 150ms status  = 0; count   = 0; silence = 0; %计算过零率 tmp1  = enframe, FrameLen, FrameInc); tmp2  = enframe  , FrameLen, FrameInc); signs = <0; diffs = >0.02; zcr   = sum; %计算短时能量 amp = sum, FrameLen, FrameInc)), 2); %调整能量门限 amp1 = min/4); amp2 = min/8); %开始端点检测 x1 = 0; x2 = 0; x3=0; x4=0; for n=1:length    goto = 0;    switch status    case {0,1}                   % 0 = 静音, 1 = 可能开始       if amp > amp1          % 确信进入语音段          x1 = max;          status  = 2;          silence = 0;          count   = count 1;       elseif amp > amp2 | ... % 可能处于语音段              zcr > zcr2          status = 1;          count  = count 1;       else                       % 静音状态          status  = 0;          count   = 0;       end    case 2,                       % 2 = 语音段       if amp > amp2 | ...     % 保持在语音段          zcr > zcr2          count = count 1;       else                       % 语音将结束          silence = silence 1;          if silence < maxsilence % 静音还不够长,尚未结束             count  = count 1;          elseif count < minlen   % 语音长度太短,认为是噪声             status  = 0;             silence = 0;             count   = 0;          else                    % 语音结束             status  = 3;          end       end    case 3,       break;    end end    count = count-silence/2; x2 = x1 count -1; subplot plot axis -1 1]) ylabel; line; line; subplot plot; axis 0 max]) ylabel; line,max], &#39;Color&#39;, &#39;red&#39;); line,max], &#39;Color&#39;, &#39;red&#39;); subplot plot; axis 0 max]) ylabel; line,max], &#39;Color&#39;, &#39;red&#39;); line,max], &#39;Color&#39;, &#39;red&#39;); 复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值