1课题研究目标
利matlab编程软件音频信号进行处理求实现声音转换男声女声转换老声音童声转换
2.课题工具
Matlab
3.课题技术线路
分析处理音频信号首先声音信号进行采集Matlab数采集工具箱提供整套命令函数通调命令函数直接控制声卡进行数采集Windows带录音机程序驱动声卡采集语音信号保存wav格式文件供matlab相关函数直接读取写入播放文wav格式音频信号作分析处理输入数matlab处理音频信号基流程:先wav格式音频信号wavread函数转换成matlab列数组变量matlab强运算力进行数分析处理时域分析频域分析信号合成识增强等处理数音频数wavread转换成wav格式文件soundwavplay等函数直接回放
4.课题实现原理
程序方法 通改变基频然时长规整方式达目
(1) 更改基频
通资料查询整理 知道基频 统计:
正常成年男声:0~200Hz
正常成年女声:200~450Hz
孩声音基频女声高老年基频男声低
整理统计知
女声基频男声基频*15
程序通抽样插值方式达基频改变
女变男例:
整数D语音信号X(n)进行抽取
XdX(Dn)
然X(n)抽样频率提高I(整数)倍 X(n)插值
DI32
(2) 时长规整
通抽样插值改变基频 播放速度播放时间发生改变 通时长规整方式播放速度 时间恢复原
程序重叠叠加算法达时长规整
重叠叠加算法原理:
分两阶段——分解合成
原始信号帧长N帧间距sa进行分解然帧间距ss进行合成
sass值决定时长规整子Fsass保证重叠区域幅度变加汉明窗
5.Matlab实现程序流程
分编程gui设计
(1) 编程
yresample(xid)重采样达抽值插值目
然时长规整
具体介绍算法前先简介绍种参数:
1) W:窗长度(Window Length)代表接受处理语音信号长度
2) Sa:分析延时(Analysis shift)代表次截取进行处理语音段首址间间隔
3) Ss:综合延时(Synthesis shift)次输出语音段首址间间隔
4) kmax:查找延时延时指分析窗口输出信号尾部相致必须发生段延时
5) Wov:段语音前段语音相叠加长度
面参数更容易理解面图标参量间关系
整算法首先语音段中前W数值取出直接存入输出序列中然根Sa值取出段语音第Sa点开始取直取W点然W点中前Wov点输出序列Wov点进行较较间致性记录较情况然整分析窗口(截取W点窗口)移动样值新序列中前Wov点输出序列中Wov点进行较时记录较结果样次做Kmax次然取出较结果中致种情况种情况截取语音序列前Wov点输出序列Wov点某种方式进行叠加然W点窗口中剩余Ss点存入输出序列中完成轮语音操作轮语音段处理面基相输入序列中截取语音段原先起点开始原先起点基础延时Sa点
果表示第m段语音信号表示原始信号序列两者关系面等式表示:
km第m分析窗口移动量km值变化范围0Kmax分析窗口km值取遍值时较次语音段前Wov点输出序列中Wov点致性取出中致性语音段前Wov点叠加输出序列中设叠加时窗表示输出序列
公式表明已输出序列中Wov点通选定窗口中前Wov语音点加权方式叠加加权值关叠加W点中剩余Ss(SsWWov)点补充输出序列中通调整Sa值Ss值(者Wov)值达语音信号进行时间长度变化
具体段语音km值究竟确定呢?
解决问题关键解决致性判决标准采互相关系数表示致性程度第m轮处理
中取分析窗口前Wov点输出序列Wov点间互相关性定义样:
点初步讨:
1) 首先次处理输入语音段中取序列起点推迟Sa点输出序列长度增Ss点认处理次SaSs点丢弃(果SaSs)果处理语音信号长度较长容易证明新旧序列长度:Ss Sa根例关系认控制输出序列长度(然种控制十分粗略语音信号较长时效)
2)选取应输入输出序列间实现滑连接实验表明采简单斜坡函数达较语音效果(采样率足够)
3) km求取降低时间复杂度重步实际需轮处理数时计算遍km计算遍km会花少时间假定点两窗会点重叠现考虑第m窗输出端Wov点出实输入序列中某点:
中
面等式出:果需计算km值需km值直接取tm果tm值超出面范围必须前面计算方法进行计算
前面讨中出点两窗相互叠加实际求输出序列Wov点前轮没参叠加运算中求参数选择满足Ss > Wov
外减km计算次数选择Kmax选取取500时SaSs量接
4) 采互相关法求km情况作算法改动:首先k值较应互相关间关系需较样避免开方麻烦运算时k值样较时需考虑终k值较计算算采递推方法:
(2) Gui设计
参考定量资料 完成较简陋界面
频谱搬移界面
6程序清单
function Yvoice1(x)
更改采样率基频改变
dresample(x32)
时长整合语音文件恢复原时长
W400
WovW2
KmaxW*2
WsimWov
xdecim8
kdecim2
Xd'
F15
Ss WWov
xpts size(X2)
ypts round(xpts F)
Y zeros(1 ypts)
xfwin (1Wov)(Wov+1)
ovix (1Wov)0
newix 1(WWov)
simix (1xdecimWsim) Wsim
padX [zeros(1 Wsim) X zeros(1Kmax+WWov)]
Y(1Wsim) X(1Wsim)
xabs 0
lastxpos 0
km 0
for ypos WsimSs(yptsW)
xpos F * ypos
kmpred km + (xpos lastxpos)
lastxpos xpos
if (kmpred < Kmax)
km kmpred
else
ysim Y(ypos + simix)
rxy zeros(1 Kmax+1)
rxx zeros(1 Kmax+1)
Kmin 0
for k KminkdecimKmax
xsim padX(Wsim + xpos + k + simix)
rxx(k+1) norm(xsim)
rxy(k+1) (ysim * xsim')
end
Rxy (rxx ~ 0)*rxy(rxx+(rxx0))
km min(find(Rxy max(Rxy))1)
end
xabs xpos+km
Y(ypos+ovix) ((1xfwin)*Y(ypos+ovix)) + (xfwin*padX(Wsim+xabs+ovix))
Y(ypos+newix) padX(Wsim+xabs+newix)
end
end
7.总结
次课题目数字信号处理技术应某实际领域指音频信号处理作存储计算机中语音信号身离散化量需离散量提取出进行处理里处理数字信号强力工具MATLAB通MATLAB里命令函数调轻易实际化语音数字信号理间搭座桥课题特色语音作量语音数字化完全利数字信号处理知识解决般信号做频谱分析样语音信号做频谱分析利MATLAB强功——GUI界面设计设计出简易户应界面实现界面操作更加方便进行语音频谱分析
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档