个人主页:研学社的博客
欢迎来到本博客❤️❤️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
本文目录如下:
目录
1 概述
2 运行结果
3 Matlab代码实现
4 参考文献
在研究了发声器官和语音的产生过程以后,便可以建立一个离散时域的语音信号产生模型,对于进一步的各项研究以及各种具体应用,这个模型是非常重要的。这里先给出一个较简单的模型如图2-1所示,对于大多数研究和应用而言(例如语音编码,语音识别等),这个模型可以完全满足需要。
图中给出了这个语音产生的离散时域模型。它包括三个部分:激励源、声道模型和辐射模型。激励源分浊音和清音两个分支,按照浊音/清音开关所处的位置来决定产生的语音是浊音还是清音。
在浊音的情况下,激励信号由一个周期脉冲发生器产生。所产生的序列是一个周期为N的冲激序列,即每隔N点便有一个样值为 1,而其它样值都为0。周期加取决于基音频率和语音信号采样频
率。在清音的情况下,激励信号由一个随机噪声发生器产生。可设定其平均值为0,其自关函数是一个单位冲激函数。这表明它的任何两个不同样点都不相关且其均方差值为1。
部分代码:
fid = fopen(fullfile(G271RootPath,'data','ExampleAudioInput2.txt'),'rt'); %读文件,文件格式为.txt
a=fscanf(fid,'%e\n');
fclose(fid);
%fid=('ling11.wav');wavwrite(44100,fid); %转换回wav格式音频文件
fid = fopen(fullfile(G271RootPath,'data','ExampleAudioOutput2.txt'),'wt');
for i = 1:size(a,1)
Slk=a(i); %输入信号
[coe,coe1,coe2,coe3,Dqk] = adpcm(Slk,coe,coe1,coe2,coe3,Dqk);
%调用语音编解码函数
fprintf(fid,'%f\n',coe2(5));
end
fclose(fid)
%---------------波形显示--------------
fid = fopen(fullfile(G271RootPath,'data','ExampleAudioInput2.txt'),'rt');
a=fscanf(fid,'%e\n');
fid = fopen(fullfile(G271RootPath,'data','ExampleAudioOutput2.txt'),'rt');
b=fscanf(fid,'%e\n');
subplot(211),plot(a);
title('输入语音波形');
subplot(212),plot(b);
title('解码输出波形');
部分理论来源于网络,如有侵权请联系删除。
[1]陈云凤,伍康文.一种基于波形变换域的分段ADPCM语音编码算法[J].数据采集与处理,1992(03):169-175.DOI:10.16337/j.1004-9037.1992.03.003.
[2]宁静. 语音编码G.723.1在TMS320C5402上的实时实现[D].天津大学,2007.