デジタル信号処理の大きな仕事-matlabR2019aの男性の声から女性の声へのデータの要約とコードに基づく

@デジタル信号処理の大きな仕事-matlabR2019aの男性の声から女性の声へのデータの概要とコードに基づく

概要概要

多くの前任者の情報を調べたところ、多くの機能が古くなっていることがわかりました。VIPからダウンロードしたコードから、コードのロジックがあまり明確でなく、意味がなく、コメントが明確ではありません(おそらく私は若すぎます)無駄に理解できません笑)ブログを書く本来の目的は、過去3日間に行った作業を要約して、将来の人々がとても幸せに感じるようにすることです。

私のフォルダを見てください

注意、みんな、matlabコードと他の関連ファイルはきちんと配置されなければなりません、さもなければあなたは将来あなたの苦労をするでしょう、hehehe;私もXiaobaiheheです、みんながお互いから学ぶ必要があります;私が初めてブログを書くとき、醜いタイプ設定はより多くの提案をすることを望んでおり、Xiao Zhuはみんなにお辞儀をします!
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入
ここに写真の説明を挿入

アルゴリズムの原理

私はいくつかを見つけました、以下は小さなメモです:

  1. 音声のサンプリングレートを変更すると、音声が変わる可能性があります。たとえば、ナイキストの定理でサンプリングレートが2fh未満の場合、高周波成分が失われ、音のトーンが自然に変化します。ただし、これにより情報が失われ、パラメータ制御を使用するのは簡単ではありません。
  2. これは、再生速度を変更することで実現できます。5%速いのは女性の声、5%遅いのは男性の声です。ドップラー効果を覚えていますか?サイレンのある車は、近づいたときは高く聞こえ、遠ざかったときはこもった音になります。これはおそらくこのようなことを意味します。しかし、明らかに、入力と出力の音の速度を変えたくないので、ユーザーエクスペリエンスはあまりにも悪いです。
  3. したがって、男性と女性の声のトーンシフトはスペクトルシフトでなければなりません。電力/信号とシステムを研究した仲間は、余弦関数に余弦関数を掛け、合計差を積分すると合計周波数差周波数成分が生成され、周波​​数スペクトルがシフトすることを知っています。この変化は「変調」と呼ばれます。では、この方法でこれを達成できるでしょうか?ありえない。2つの乗算された量の周波数が非常に異なり、生成された信号を簡単にフィルターで除去できるため、電源がオンのときは問題ありません。男性と女性の声の距離が非常に近く、周波数帯域が広いため、シミュレーションでは実現できません。
  4. ははは、現時点ではデジタル信号処理の優位性を反映しており、現在の効果はあまり良くありませんが、もっと上手くいくと思いますので、後で更新します!一部のコードはサーシフトを使用して移動しますが、それはスペクトルを一定の範囲で回転させる機能にすぎません。私はそれの使用法を本当に理解していません。それで、ついに時間領域でexp(jwt)を乗算することにしましたが、効果が良くなく、理由がわかりません。これはおそらく理想と現実の間のギャップであり、理論を実装するのが難しいことを示しています。

try1.m

clc
[y1,Fs] = audioread('source.wav');  %读出信号,采样率和采样位数。 %注意文件格式要求
%source为男声音频
%sound(y1,Fs);  %播放文件

%设计巴特沃斯低通滤波器  此处加滤波器会使声音变模糊,似乎很重要的高频分量被丢掉了
%Wc1=2*1000/Fs;                                          %男声截止频率 1000Hz
%[b,a]=butter(4,Wc1);
%y1=filter(b,a,y1);

Y1 = fft(y1);%Fast Fourier transform

sigLength=length(y1);%Length of largest array dimension
f=Fs*(1:sigLength)/sigLength;
absY=abs(Y1);%Absolute value and complex magnitude

figure('Name','Measured Data','NumberTitle','off');
%Create figure window
%Specify the Name property again, but this time, set the NumberTitle property to 'off'. 
%The resulting title does not include the figure number.

%绘制男声频域
subplot(2,2,1);plot(f,absY);xlabel('Frequency(Hz)男声频域');grid on

%绘制男声时域
t=(0:sigLength-1)/Fs;%t = 1 / f
subplot(2,2,2);plot(t,y1);xlabel('Time(s)男声时域');grid on

%频谱搬移(时域相移,频域调制)
Y2 = fft(y1 .* exp(1000/(2 * pi) * 1i .* t'));

%绘制女声频域
absY2=abs(Y2);
subplot(2,2,3);plot(f,absY2);xlabel('Frequency(Hz)女声频域');grid on

%绘制女声时域
y2=ifft(Y2);
subplot(2,2,4);plot(t,y2);xlabel('Time(s)女声时域');grid on
y2=abs(y2);%audiowrite必须输入为实数

%失败的滤波器尝试
%BPF = load('LPF_60M.mat');
%y3 = filter(BPF.LPF_60M,1,y2);

%能调通但是效果不好的滤波器尝试
y3=highp(y2,400,500,0.0001,0.02,Fs);

audiowrite('transform30.wav',y3,Fs)
%transform30为生成的文件,它生成的地址不是很确定,会发生变化,
%我还没搞明白,以下是它出现的两个位置:
%C:\Users\honor\Documents\MATLAB\Examples\R2019a\matlab\WriteanAudioFileExample
%E:\\dsp_greatassignment\try
若不清楚可在电脑“开始”里搜一下具体在哪。

上記で使用したhighp関数、このコードは多くのWebページで利用できます。https://www.cnblogs.com/tkppain/p/6691052.html?utm_source = itdadao&utm_medium = referralからコピーして貼り付け、いくつかの変更を加えました。 。

function y=highp(x,f1,f2,rp,rs,Fs)
%高通滤波,该代码鲁棒性很差,试试你就晓得了
%也可能是我不会用
%通带或阻带的截止频率的选取范围是不能超过采样率的一半
%即,f1,f3的值都要小于 Fs/2
%x:需要带通滤波的序列
% f 1:通带截止频率
% f 2:阻带截止频率
%rp:边带区衰减DB数设置
%rs:截止区衰减DB数设置
%FS:序列x的采样频率

wp=2*pi*f1/Fs;
ws=2*pi*f2/Fs;
% 设计切比雪夫滤波器;
[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);
[bz1,az1]=cheby1(n,rp,wp/pi,'high');

%查看设计滤波器的曲线
[h,w]=freqz(bz1,az1,256,Fs);
h=20*log10(abs(h));
figure('Name','highpass filter','NumberTitle','off');
plot(w,h);title('所设计滤波器的通带曲线');grid on;
y=filter(bz1,az1,x);
end

%失敗したフィルターは、VIP経由でダウンロードしたコード(参照コードの「フィルター」)を使用しようとしましたが、何らかの理由で調整できませんでした。MATLABコマンドラインウィンドウにfdatoolと入力して、デザインフィルターウィンドウをポップアップしますが、.fdaファイルはデザインが直接保存された後に生成され、直接使用することはできません。.matファイルに変換する必要があります。.matファイルを直接使用することはできません。エディタで「load( 'BPF_130M.mat')」を使用するか、フォルダ内でダブルクリックする必要があります。ただし、マットファイルとしてエクスポートしたパラメータが正しく選択されていない可能性があります。参照コード「filter」と同じように見えますが、調整できません。緊急~~

データ

以下は、困難で曲がりくねった探索プロセス中に渡された役立つWebページです。

https://jingyan.baidu.com/article/3052f5a108e14397f21f8658.html.mat
ファイルを開く

https://wenku.baidu.com/view/cf9f236cbd64783e09122b87.html#fdatool
とFIRMegaCoreのスキルの使用に関する問題

https://blog.csdn.net/yangming2466/article/details/835489467
つのフィルタリング方法

https://blog.csdn.net/flypassion/article/details/82082543?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160343803219724838551089%2522%252C%2522scm%2522%253A%252220140713.130102334...%2522%257D&request_id=257 160343803219724838551089&biz_id = 0&utm_medium = distribution.pc_search_result.none-task-blog-2 all first_rank_v2〜rank_v28-1-82082543.first_rank_ecpm_v3_pc_rank_v2&utm_term =%E9%AB%98%E9%80%9A2%E6%BB3% %E5%99%A8matlab&spm = 1018.2118.3001.4187
フィルターデータ

https://www.cnblogs.com/lianjiehere/p/3806964.htmlfda
ファイル

https://blog.csdn.net/qq_38559814/article/details/86521602
フィルター
https://www.cnblogs.com/tkppain/p/6691052.html
フィルター

おすすめ

転載: blog.csdn.net/weixin_46279604/article/details/109252160