MATLAB:女声转男声
代码:
%女声转变为男声
clc;
[y,Fs]=audioread('test1.wav');%读出信号,采样率和采样位数。
sigLength=length(y);
Y = fft(y,sigLength);
%Pyy = Y.* conj(Y) / sigLength;% conj函数,用于求一个复数的复共轭
halflength=floor(sigLength/2); % 根据模板大小确定要扩展的边界
f=Fs*(1:sigLength)/sigLength;
stor=Y(1);
Y(1)=0;
absY=abs(Y);
figure(1)
subplot(2,2,1);plot(f,absY);xlabel('Frequency(Hz)');grid on
axis([0,f(end)/2,0,15]);title('初始音频频谱');
t=(0:sigLength-1)/Fs;
subplot(2,2,2);plot(t,y);title('初始音频时域');
xlabel('Time(s)');grid on
y1=y;
Y0=Y;
Y1=circshift(Y0,100);%移频
absY1=abs(Y1);
subplot(2,2,3);plot(f,absY1);xlabel('Frequency(Hz)');grid on;
y2=ifft(Y1);title('变换后音频频谱');
subplot(2,2,4);plot(t,y2);title('变换后音频时域');
xlabel('Time(s)');grid on;
audiowrite('test4.wav',y2,1.45*Fs);
[audio2,fs2]=audioread('test4.wav');%声音读取audio是读出数据 fs为音频文件的采样率
audio_final = [y;audio2];%原始语音,变换后语音,合成音频矩阵
sound(audio_final); %播放语音
图像: