Perfumeボイスを高位合成/HDLコード生成でZynq実装!その1
Perfumeボイス
Perfumeの独特な機械っぽいボイスはVocoderというエフェクトを使っている。
https://www.youtube.com/watch?v=KbiSxunJatM
Vocoderの曲はこの辺で見れる。https://www.youtube.com/watch?v=0kEHP2aUItA
VST Pluginなんかでフリーでもあると思うが、ZynqのボードZed Boardに実装してみようと思う。
Zynq
ARM Cortex-AとFPGAが1チップになったものだが、今回は信号処理部分はFPGA側に実装予定。
Zed BoardにはAudio Codec(AD/DA)が実装されていて、Mini Pin Jackのアナログオーディオ入出力が付いている。これを使う。
Vocoderアルゴリズム
昔買ったエフェクター自作術とかって本にアナログ回路でVocoder作成例が載っていたので、これをディジタル化することにした。一部抜粋(問題あれば削除します。)
基本的にはオクターブバンドのBPF、Envelope Follower、VCA(Voltage Controled Amplifier)で構成されている。下図はブロック図。
まずはOctave Filter設計
MATLABでOctave Filterを設計
%% Design octave filters
% Parameters
BandsPerOctave = 1;
N = 4; % Filter Order
F0 = 1000; % Center Frequency (Hz)
Fs = 44100; % Sampling Frequency (Hz)
f = fdesign.octave(BandsPerOctave,'Class 1','N,F0',N,F0,Fs);
%% Design filters
F0 = validfrequencies(f);
Nfc = length(F0);
for n=1:Nfc
f.F0 = F0(n);
Hd(n) = design(f,'butter', 'FilterStructure', 'df1sos');
end
%% Visualize
hfvt = fvtool(Hd,'FrequencyScale','log','color','white');
axis([0.01 Fs*1.2e-3/2 -90 5])
title('Octave-Band Filter Bank')
音声信号入力してシミュレーションできるよう、Simulinkブロック生成
%% Simulink block generation
for n=1:Nfc
realizemdl(Hd(n), 'Blockname', ['Octave' num2str(n)])
end
その2に続く・・・次回はEnvelope Filterなど作っていきたいと思っています。
Author And Source
この問題について(Perfumeボイスを高位合成/HDLコード生成でZynq実装!その1), 我々は、より多くの情報をここで見つけました https://qiita.com/SacredTubes/items/fc81370cdb217bcfc630著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .