LP-PSOLA算法之(一) 语音变速
来源:互联网 发布:浙江中控怎么样知乎 编辑:程序博客网 时间:2024/05/29 08:20
本文实现语音变速的方法是基于线性预测,有人问,时域做变速方法很方便,为何要用线性预测来做?
- 语音编码,得到每帧信号的lpc系数和基音频率,就能预测出语音。
- 该方法可算出共振峰等参数,方便做变调的时候,对共振峰进行调整。
- 通过LP-PSOLA算法,学习基音检测的原理和算法,方便开展更多工作。
一 .概述
1.1 语音变速属语音更改范畴,两方面研究:
1.声学参数,如共振峰频率,基频,主要由声道差异决定。
2.韵律学参数,如说话快慢,节奏,口音不同。
1.2 变速本质:
把语音在时间上缩短或者拉长,而语音的采样频率/基频/共振峰不改变。
如图,上半轴表示原始语音,下半轴表示变速后的语音。上半轴大圆点表示每一帧的起始位置,下半轴小圆点表示变速后的每一帧起始位置。
语音时间减少,语速增加,缩短语音帧数fn’比原帧数少,因此要对帧数fn进行插值。
缩短语音每一帧对应的原始信号的时间,并不是原始信号的时刻,因此要对基音周期进行插值。
同样要对线性预测系数进行插值。
二. 语音变速步骤
- 分帧/基因检测/计算lpc系数。
- 按照新的语音时长,对帧数fn插值为fn‘。
- 将ai系数转化称LSF参数,对LSF参数插值。
- 将插值后的LSF系数重构为1-fn’帧线性预测系数ai’。
- 用预测系数ai’和基音参数合成语音。
PS. 这里讲一下插值函数Interp1函数的使用:
MATLAB hep:1-D data interpolation (table lookup)
既然有interp1,那一定也有interp2/interp3,interp1用来对一维数组进行插值,但是,interp1也可用用来做二维数组的插值,也是一维一维地处理。
用框图表示流程:
三. MATLAB仿真结果
说明: 注意横坐标,原始信号得时间长度大概为2.5秒,速度放慢一倍,语音长度变为5秒,在相同采样频率fs = 8000Hz下,语音速度就变慢了。
参考文献:
[1] 宋知用. Matlab在语音信号分析与合成中的应用[M]. 北京:北京航空航天大学出版社:2013.
阅读全文
1 0
- LP-PSOLA算法之(一) 语音变速
- LP-PSOLA算法之(二) 语音变调
- soundtouch变速wsola算法之改进
- 语音信号之基础知识(一)
- 语音识别之portaudio入门教程(一)
- JAVA实现的DES加密解密算法(源程序)(lp)
- 缓冲运动(变速)
- soundtouch之变调、变速、节拍
- 语音上传(一)
- lp
- 【VS开发】【智能语音处理】语音信号处理之(一)动态时间规整(DTW)
- WebRTC之语音活动检测(VAD)算法
- Asterisk呼叫中心之语音导航(一)
- SIP语音对讲从零到整之(一)sip介绍
- cocos2dx之 android/ios语音交互(一)
- 单通道语音增强之维纳滤波(一)
- 变速不变调算法 变声算法 变声代码 变调算法 变调不变速 音色算法
- 【cocos2d-x】动作类之缓冲动作和组合动作的使用(变速动作)
- dataTable 基本设置
- Python版本升级
- 心静自然凉
- Android使用Google Gson实现JSON字符串和对象、对象数组之间相互转换
- [Leetcode] 153. Find Minimum in Rotated Sorted Array
- LP-PSOLA算法之(一) 语音变速
- qt中使用QML
- 前端如何上传文件到七牛
- 并发编程·十三
- ROC和AUC介绍以及如何计算AUC
- 不用加减乘除做加法(Java实现)
- 配置xshell的 鼠标选中即复制,右键即粘贴的功能
- ubuntu14.04安装pstuil遇到的缺乏头文件python.h问题解决
- 初涉Kotlin