[音声合成] matlab音声信号に基づくトーン連音[Matlabソースコード566を含む]

1.はじめに

Matlab音声信号に基づくトーン変更

第二に、ソースコード

clear all; clc; close all;

[xx,fs]=wavread('C7_4_y.wav');                     % 读取文件
xx=xx-mean(xx);                           % 去除直流分量
x=xx/max(abs(xx));                        % 幅值归一化
lx=length(x);                             % 数据长度
time=(0:lx-1)/fs;                         % 求出对应的时间序列
wlen=240;                                 % 设定帧长
inc=80;                                   % 设定帧移的长度  
overlap=wlen-inc;                         % 重叠长度
tempr1=(0:overlap-1)'/overlap;            % 斜三角窗函数w1
tempr2=(overlap-1:-1:0)'/overlap;         % 斜三角窗函数w2
n2=1:wlen/2+1;                            % 正频率的下标值
X=enframe(x,wlen,inc)';                   % 按照参数进行分帧
fn=size(X,2);                             % 总帧数
T1=0.1; r2=0.5;                           % 端点检测参数
miniL=10;                                 % 有话段最短帧数
mnlong=5;                                 % 元音主体最短帧数
ThrC=[10 15];                             % 阈值
p=12;                                     % LPC阶次
frameTime=FrameTimeC(fn,wlen,inc,fs);     % 计算每帧的时间刻度
in=input('请输入基音频率升降的倍数:','s');  % 输入基音频率增降比例
rate=str2num(in);

for i=1 : fn                              % 求取每帧的预测系数和增益
    u=X(:,i);
    [ar,g]=lpc(u,p);
    AR_coeff(:,i)=ar;
    Gain(i)=g;
end

% 基音检测
[voiceseg,vosl,SF,Ef,period]=pitch_Ceps(x,wlen,inc,T1,fs); %基于倒谱法的基音周期检测
Dpitch=pitfilterm1(period,voiceseg,vosl);       % 对T0进行平滑处理求出基音周期T0

if rate>1, sign=-1; else sign=1; end
lmin=floor(fs/450);                       % 基音周期的最小值
lmax=floor(fs/60);                        % 基音周期的最大值
deltaOMG = sign*100*2*pi/fs;              % 根值顺时针或逆时针旋转量dθ
Dpitchm=Dpitch/rate;                      % 增减后的基音周期
% Dfreqm=Dfreq*rate;                        % 增减后的基音频率

tal=0;                                    % 初始化
zint=zeros(p,1); 
for i=1 : fn
    a=AR_coeff(:,i);                      % 取得本帧的AR系数
    sigma=sqrt(Gain(i));                  % 取得本帧的增益系数

    if SF(i)==0                           % 无话帧
        excitation=randn(wlen,1);         % 产生白噪声
        [synt_frame,zint]=filter(sigma,a,excitation,zint);
    else                                  % 有话帧
        PT=floor(Dpitchm(i));             % 把周期值变为整数
        if PT<lmin, PT=lmin; end          % 判断修改后的周期值有否超限
        if PT>lmax, PT=lmax; end
        ft=roots(a);                      % 对预测系数求根
        ft1=ft;
%增加共振峰频率,实轴上方的根顺时针转,下方的根逆时针转,求出新的根值
        for k=1 : p
            if imag(ft(k))>0, 
                ft1(k) = ft(k)*exp(j*deltaOMG);
	        elseif imag(ft(k))<0 
                ft1(k) = ft(k)*exp(-j*deltaOMG);
	        end
        end
        ai=poly(ft1);                     % 由新的根值重新组成预测系数

        exc_syn1 =zeros(wlen+tal,1);      % 初始化脉冲发生区
        exc_syn1(mod(1:tal+wlen,PT)==0)=1;% 在基音周期的位置产生脉冲,幅值为1
        exc_syn2=exc_syn1(tal+1:tal+inc); % 计算帧移inc区间内的脉冲个数
        index=find(exc_syn2==1);
        excitation=exc_syn1(tal+1:tal+wlen);% 这一帧的激励脉冲源
        
        if isempty(index)                 % 帧移inc区间内没有脉冲
            tal=tal+inc;                  % 计算下一帧的前导零点
        else                              % 帧移inc区间内有脉冲
            eal=length(index);            % 计算脉冲个数
            tal=inc-index(eal);           % 计算下一帧的前导零点
        end
        gain=sigma/sqrt(1/PT);            % 增益
        [synt_frame,zint]=filter(gain,ai,excitation,zint);%用激励脉冲合成语音
    end
    
    if i==1                               % 若为第1帧
            output=synt_frame;            % 不需要重叠相加,保留合成数据
        else
            M=length(output);             % 重叠部分的处理
            output=[output(1:M-overlap); output(M-overlap+1:M).*tempr1+...
                synt_frame(1:overlap).*tempr2; synt_frame(overlap+1:wlen)];
        end
end

3、実行中の結果

ここに画像の説明を挿入します

四、備考

完全なコードまたは書き込み追加QQ1564658423過去のレビュー
>>>>>>
[機能の抽出] matlabウェーブレット変換に基づくオーディオ透かしの埋め込みと抽出[Matlabソースコード053を含む]
[音声処理] matlabGUIに基づく音声信号処理[Matlabを含むソースコードの問題290]
[音声取得] matlabGUI音声信号収集に基づく[Matlabソースコード291を含む]
[音声変調] matlabGUI音声振幅変調に基づく[Matlabソースコード292を含む]
[音声合成] matlabGUI音声に基づく合成[Matlabソースコードの問題293を含む]
[音声暗号化] matlabGUIに基づく音声信号の暗号化と復号化[Matlabソースコード295を使用]
[音声拡張] Matlabウェーブレット変換ベースの音声拡張[Matlabソースコード296]
[音声認識] matlabGUI音声ベース周波数認識に基づく[Matlabソースコード294を含む]
[音声拡張] Matlab GUIWienerフィルタリングベースの音声拡張[Matlabソースコード298を含む]
[音声処理] matlabGUI音声信号処理に基づく[Matlabソースコード299を含む]
[信号処理] Matlab音声信号スペクトルアナライザーに基づく[Matlabソースコード325を含む]
[変調信号] matlabGUIに基づくデジタル変調信号シミュレーション[Matlabソースコード336を含む]
[感情認識] matlabBPニューラルに基づく音声感情認識ネットワーク[Matlabソースコード349の​​問題を含む]
[音声ステガノグラフィー] Matlabウェーブレット変換に基づく定量化されたオーディオデジタルウォーターマーキング[Matlabソースコードの問題351を含む]
[特徴抽出] matlabオーディオ透かしの埋め込みと抽出に基づく[Matlabソースコード350期間を含む]
[音声ノイズ除去] matlabローパスと適応フィルターノイズ除去に
基づく[ Matlabソースコード352期間を含む] [感情認識] matlabGUIに基づく音声感情分類認識[Matlabソースコード354期間を含む]
[基本処理] Matlabベースの音声信号前処理[Matlabソースコード364期間を含む]
[音声認識] Matlabフーリエ変換0-9デジタル音声認識[Matlabソースコード384期間を含む]
[音声認識] matlab GUI DTWに基づく0〜9桁の音声認識[Matlabソースコード385を含む]
[音声再生] Matlab GUIMP3設計[Matlabソースコード425を含む]
[音声処理]人間の耳のマスキングに基づく音声強調アルゴリズム効果ノイズ比計算[Matlabソースコード428を含む]
[音声ノイズ除去] matlabスペクトル減算ノイズ除去に基づく[Matlabソースコード429を含む]
[音声認識] matlab駆動運動量項目に基づくBPニューラルネットワーク音声認識[Matlabソースコード430を含む]
[音声ステガノグラフィ] matlabLSB音声隠蔽に基づく[Matlabソースコード431を含む]
[音声認識] matlabの男性と女性の音声認識に基づく[Matlabソースコード452を含む]
[音声処理] matlab音声ノイズの追加とノイズリダクション処理に基づく[MatlabソースコードIssue473を含む]
[音声ノイズ除去] matlab最小二乗(LMS)適応フィルターに基づく[ Matlabソースコード481を含む]
[音声強調] matlabスペクトル減算、最小平均二乗、およびWienerフィルター音声強調に基づく[Matlabを含むソースコード482期間】
[通信] matlab GUIデジタル周波数帯域(ASK、PSK、QAM)変調シミュレーションに
基づく[ Matlabソースコード483を含む] [信号処理] matlabECG信号処理に基づく[Matlabソースコード484を含む]
[音声ブロードキャスト] matlabに基づく音声ブロードキャスト[Matlabソースコード507を含む]
[信号処理] matlabウェーブレット変換EEG信号特徴抽出に
基づく[ Matlabソースコード511を含む] [音声処理] matlab GUIデュアルトーンマルチ周波数(DTMF)信号検出に基づく[含むMatlabソースコード512】
【音声ステガノグラフィー】matlabLSBに基づいて音声信号のデジタル透かしを実現【Matlabソースコード513を含む】
【音声強調】matlab一致フィルターに基づく音声認識【Matlabソースコード514を含む】
【音声処理】 matlabGUI音声に基づく周波数ドメインスペクトログラム分析[Matlabソースコード527を含む]
[音声ノイズ除去] matlab LMSに基づく、RLSアルゴリズム音声ノイズ除去[Matlabソースコード528を含む]
[音声ノイズ除去] matlabLMSスペクトル減算音声ノイズ除去に基づく[含むMatlabソースコードの問題529]
[音声ノイズ除去] matlabソフトしきい値、ハードしきい値、妥協しきい値に基づく音声ノイズ除去[Matlabソースコード530を含む]
[音声認識] matlab特定の人の音声認識識別に基づく[Matlabソースコード534を含む]
[音声ノイズ除去] matlabウェーブレットソフトしきい値に基づく音声ノイズリダクション[Matlabソースコード531を含む]
[音声ノイズ除去] matlabウェーブレットハードしきい値に基づく音声ノイズリダクション[Matlabソースコード532を含む]
[音声認識] matlabMFCCおよびSVM固有に基づく人間の性別認識[Matlabソースコード533を含む]
[音声認識] MFCCに基づくGMM音声認識[Matlabソースコード535を含む]
[音声認識] matlabVQに基づく特定の人の孤立した単語音声認識[Matlabソースコード536を含む]
[音声認識] matlabGUIに基づく音声認識[含むMatlab]ソースコードの問題537]
[取得と読み取り] matlab音声収集と読み取りに基づく[Matlabソースコード538を含む]
[音声編集] matlab音声編集に基づく[Matlabソースコード539を含む]
[音声モデル] matlab音声に基づく信号数学モデル[Matlabソースコード540を含む]
[音声の健全性] matlabの音声強度とラウドネスに基づく[Matlabソースコード541を含む]
[感情認識] matlabK最近傍分類アルゴリズムに基づく音声感情認識[Matlabソースコード542を含む]
[感情認識] matlabサポートベクトルマシン(SVM)に基づく音声感情認識[Matlabソースコード543を含む]
[感情認識]ニューラルネットワークベースの音声感情認識[Matlabソースコード544を含む]
[音源定位]音源定位ベースmatlabの異なる空間スペクトル推定についてアルゴリズムの比較[Matlabソースコード545を含む]
[音源定位]異なる信号対雑音比で信号を受信するmatlabマイクに基づく[Matlabソースコード546を含む]
[音源位置]部屋のインパルス応答に基づくmatlabシングル音源とデュアルマイク[Matlabソースコード547を含む]
[音源定位] Matlab一般化相互相関ベースの音源位置[Matlabソースコード548を含む]
[音源位置] Matlabアレイマニホールドマトリックスベースの信号表示[Matlabソースコード549を含む]
[機能抽出] matlabformant推定に基づく[Matlabソースコード550期間を含む]
[特徴抽出] matlabピッチ周期推定に基づく[Matlabソースコード551を含む]
[特徴抽出] matlab音声エンドポイント検出に基づく[Matlabソースコード552を含む]
[音声コーディング] matlabADPCMコーデックに基づく[Matlabソースコード553を含む]
[音声エンコード] matlabLPCエンコードおよびデコードに基づく[Matlabソースコード554期間を含む]
[音声エンコード] matlabPCMエンコードおよびデコードに基づく[Matlabソースコード555期間を含む]
[音声分析] matlabセプストラム分析およびMFCC係数に基づく計算[Matlabソースコード556を含む]
[音声分析] matlab線形予測係数比較に基づく[Matlabソースコード557を含む]
[音声分析] matlab音声短時間周波数ドメイン分析に基づく[Matlabソースコード558を含む]
[音声分析] matlab音声短時間時間領域分析に
基づく[ Matlabソースコード問題559を含む] [音声分析] matlab音声ラインスペクトルペア変換に基づく[Matlabソースコード560を含む]
[音声合成] matlab比例に基づく信号フレーミングと復元オーバーラップと加算[Matlabソースコード561を含む]
[音声合成] matlab線形予測フォーマント検出とピッチパラメータに
基づく音声合成[ Matlabソースコード562を使用] [音声合成] matlab線形予測係数とピッチパラメータに基づく[Matlabソースを使用コード563]
[音声合成] matlab線形予測に基づく音声合成の係数と予測誤差[Matlabソースコード564を含む]
[音声合成] matlab音声信号速度変化に基づく[Matlabソースコード565を含む]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/114997457