Perfume 음성을 고위 합성/HDL 코드 생성으로 Zynq 구현! 그 1
Perfume 음성
Perfume의 독특한 기계 같은 보이스는 Vocoder라는 이펙트를 사용하고 있다.
htps //w w. 요츠베. 이 m/와 tch? v = K와 S
Vocoder의 노래는이 근처에서 볼 수 있습니다. htps //w w. 요츠베. 이 m/와 tch? v = 0, HP2 충격
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등 만들어 가고 싶습니다.
Reference
이 문제에 관하여(Perfume 음성을 고위 합성/HDL 코드 생성으로 Zynq 구현! 그 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SacredTubes/items/fc81370cdb217bcfc630
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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등 만들어 가고 싶습니다.
Reference
이 문제에 관하여(Perfume 음성을 고위 합성/HDL 코드 생성으로 Zynq 구현! 그 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SacredTubes/items/fc81370cdb217bcfc630
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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등 만들어 가고 싶습니다.
Reference
이 문제에 관하여(Perfume 음성을 고위 합성/HDL 코드 생성으로 Zynq 구현! 그 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SacredTubes/items/fc81370cdb217bcfc630텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)