matlab调制变声,MATLAB变声程序代码

% ct1

clear all,close all, clc;

% 定义常数

FL = 80; % 帧长

WL = 240; % 窗长

P = 10; % 预测系数个数

[s,fs] = wavread('sunday_2.wav'); % 载入语音s

s = s/max(s); %归一化

L = length(s); % 读入语音长度

FN = floor(L/FL)-2; % 计算帧数

% 预测和重建滤波器

exc = zeros(L,1); % 激励信号(预测误差)

zi_pre = zeros(P,1); % 预测滤波器的状态

s_rec = zeros(L,1); % 重建语音

zi_rec = zeros(P,1);

% 合成滤波器

exc_syn = zeros(L,1); % 合成的激励信号(脉冲串)

s_syn = zeros(L,1); % 合成语音

last_syn = 0; %存储上一个(或多个)段的最后一个脉冲的下标

zi_syn = zeros(P,1); % 合成滤波器的状态

% 变调不变速滤波器

exc_syn_t = zeros(L,1); % 合成的激励信号(脉冲串)

s_syn_t = zeros(L,1); % 合成语音

last_syn_t = 0; %存储上一个(或多个)段的最后一个脉冲的下标

zi_syn_t = zeros(P,1); % 合成滤波器的状态

% 变速不变调滤波器(假设速度减慢一倍)

v=.5;

exc_syn_v = zeros(v\L,1); % 合成的激励信号(脉冲串)

s_syn_v = zeros(v\L,1); % 合成语音

last_syn_v = 0; %存储上一个(或多个)段的最后一个脉冲的下标

zi_syn_v = zeros(P,1); % 合成滤波器的状态

hw = hamming(WL); % 汉明窗

% 依次处理每帧语音

for n = 3:FN

% 计算预测系数(不需要掌握)

s_w = s(n*FL-WL+1:n*FL).*hw; %汉明窗加权后的语音

[A E] = lpc(s_w, P); %用线性预测法计算P个预测系数

% A是预测系数,E会被用来计算合成激励的能量

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值