【语音合成】基于matlab线性预测系数和预测误差语音合成【含Matlab源码 564期】
2021/6/27 17:20:33
本文主要是介绍【语音合成】基于matlab线性预测系数和预测误差语音合成【含Matlab源码 564期】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、简介
基于matlab线性预测系数和预测误差的语音合成
二、源代码
clear all; clc; close all; [x, fs] = audioread('girl.wav'); % 读入数据文件 x=x(:,1); sound(x,fs) pause(4); x=x-mean(x); % 消除直流分量 x=x/max(abs(x)); % 幅值归一 xl=length(x); % 数据长度 time=(0:xl-1)/fs; % 计算出时间刻度 p=12; % LPC的阶数为12 wlen=200; inc=80; % 帧长和帧移 msoverlap = wlen - inc; % 每帧重叠部分的长度 y=enframe(x,wlen,inc)'; % 分帧 fn=size(y,2); % 取帧数 % 语音分析:求每一帧的LPC系数和预测误差 for i=1 : fn u=y(:,i); % 取来一帧 A=lpc(u,p); % LPC求得系数 aCoeff(:,i)=A; % 存放在aCoeff数组中 errSig = filter(A,1,u); % 计算预测误差序列 resid(:,i) = errSig; % 存放在resid数组中 end % 语音合成:求每一帧的合成语音叠接成连续语音信号 for i=1:fn A = aCoeff(:,i); % 取得该帧的预测系数 residFrame = resid(:,i); % 取得该帧的预测误差 synFrame(i,:) = filter(1, A', residFrame); % 预测误差激励,合成语音 end; outspeech=Filpframe_OverlapS(synFrame,wlen,inc); ol=length(outspeech); if ol<xl % 把outspeech补零,使与x等长 outspeech=[outspeech zeros(1,xl-ol)]; else outspeech=outspeech(1:xl); end sound(outspeech,fs) % 作图 subplot 211; plot(time,x); xlabel(['时间/s']); ylabel('幅值'); ylim([-1 1.1]); title('(a)原始语音信号')
三、运行结果
四、备注
版本:2014a
完整代码或代写加1564658423
这篇关于【语音合成】基于matlab线性预测系数和预测误差语音合成【含Matlab源码 564期】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现