用matlab实现女声变男声步骤,男声变女声matlab程序

% 载入声音

[s,fs,nbits] = wavread('222');

%播放原始声音

sound(s,fs,nbits);

FL = 80; % 帧长

WL = 240; % 窗长

P = 10; % 预测系数个数

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); % 合成滤波器的状态

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

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会被用来计算合成激励的能量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值