보코더 프로그래밍


11

"Songify" 와 같은 자체 보코더 신시사이저를 프로그래밍하고 싶지만 간단한 보코더 알고리즘을 찾을 수 없습니다. 보코더의 작동 방식에 대한 정보를 어디에서 찾아야하는지 설명하거나 말할 수 있습니다.


3
DAFX 우도 Zölzer 등에 의한 약간의 MATLAB 코드와 간단한 위상 보코더 있습니다.
Phonon

1
Melodify SDK를 확인하십시오 . 동일한 작업을 수행하며 데모 평가판을 사용할 수 있습니다.
Danijel

답변:


18

여기의 모든 답변이 질문과 관련이 없다고 생각합니다. 음악 제작 세계에서 보코더 라고하는 것은 신호 처리에 사용되는 위상 보코더 와 거의 관련이 없습니다 . 설상가상으로 원래 게시물 에서 참조한 Songify 앱은 보코더의 예가 아닙니다. 이것을 정리하자!

1. 위상 보코더

위상 보코더 다른 응답에 의해 참조가, 신호의 주파수 - 시간 표현을 계산하여 신호 (타임 스트레칭은 피치 시프트)의 시간 / 피치 수정을 수행하는데 사용될 수있는 신호 처리 기술이다 (짧은 기간 푸리에 변환 또는 STFT)를 누른 다음 신호 프레임을 삽입 / 제거하고 위상 정보의 일관성을 유지합니다. 음성과의 관계는 과거의 기록 일 뿐이며 현재는 저가형 오디오 하드웨어 / 소프트웨어에서 피치 시프 팅 및 타임 스트레칭에 사용됩니다. RubberBand 는 위상 보코더를 기반으로하는 오픈 소스 C ++ 시간 / 피치 변경 라이브러리의 예입니다.

2. 보코더

음악 제작 분야의 사람들이 보코더 (Bocoder)를 언급 할 때, 그들은 신호의 스펙트럼 엔벨로프 (보통 변조기라고 불리는 음성)를 추출하고 다른 신호 (보통 캐리어라고하는 풍부한 신스 텍스처)를 필터링하는 장치를 말합니다. 응답이 추출 된 스펙트럼 포락선 인 필터를 사용합니다. 결과 사운드의 예를 보려면 Kraftwerk Trans Europe Express의 0:23 또는 Alan Parsons의 Project The Raven 을 몇 초 동안 들어보십시오. 그 결과 효과는 캐리어 신호에 의해 연주되는 멜로디 또는 코드에 적용된 보컬과 같은 음색으로 신디사이저를 통해 음성이 들리는 느낌을줍니다.

보코더는 원래 아날로그 장치로, Q가 높은 12 개 이상의 대역 통과 필터 뱅크 2 개로 구현되었습니다. 변조기 신호는 첫 번째 필터 뱅크를 통해 전송되며 모든 부대 역 신호의 진폭은 봉투 추종자 배열. 동시에 반송파 신호는 다른 필터 뱅크를 통해 전송됩니다. 각 서브 밴드는 엔벨로프 추종자가 제공 한 이득으로 증폭됩니다 (VCA 포함). 아날로그를 읽으면 Jurgen Haible의 살아있는 보코더 에서 보코더 채널 의 회로도를 볼 수 있습니다-변조기 신호 필터 상단, 캐리어 필터 및 VCA 하단. 보코더의 소프트웨어 구현은 단순히 음악 제작자가 보코더가 클래식 아날로그 장치처럼 들리기를 기대하기 때문에 이에 가깝습니다! 그러나 "빈티지"장치에 대한 충실도를 원치 않고 40 개의 biquad보다 저렴한 것을 원한다면 동일한 결과를 얻는 또 다른 방법은 전극 필터를 추정하는 것입니다. 변조기 신호 (AR- 모델링)로부터 원래의 음성에 도달하기 위해; 그런 다음이 필터를 캐리어에 적용하십시오. 여기서 일반적인 문제는 매 20ms 프레임마다 필터 계수를 업데이트해야한다는 것입니다. 따라서 급격한 계수 업데이트를 처리하는 전 극 필터의 표현이 필요합니다.

3. 자동 튜닝 및 피치 리매핑

Songify의 기능은 다음과 같습니다. 녹음 된 음색의 프로 소디 (피치 윤곽)를 추출하고 결과 피치 윤곽이 대상 멜로디와 일치하도록 변경합니다. 이것은 자동 튜닝과 약간 유사하며, 자동 튜닝은 가장 가까운 음악적으로 정확한 반음으로 피치를 "반올림"하는 반면 Songify는이 값을 목표 값으로 푸시합니다.

여기에서 작동하는 알고리즘은 음성 신호가 모노 포닉이고 소스 필터 모델에 잘 맞기 때문에 기존의 피치 시프 팅 타임 스트레칭과는 매우 다릅니다. TD-PSOLA (Time-Domain Pitch-Synchronous-Overlap-Add)와 같은 접근 방식은 일반적인 시간 스트레치 알고리즘 (보통 위상 보코더로 수행됨)보다 음성 피치를 투명하게 변경하기 위해 계산 및 품질 측면에서 훨씬 더 효율적입니다. ). 예를 들어 Songify와 달리 합성 된 문장의 번영을 바꾸기 위해 음성 합성에 사용됩니다! 자동 튜닝은 또한 시간 도메인 방법 (입력 파형의 전체 사이클을 감지하고 리샘플링)을 기반으로합니다.

PSOLA 일러스트레이션



2

Mathworks의 유사 코드에 대한 하나의 링크가 있습니다.

다음 은 DSP Dimensions의 알고리즘에 대한 설명입니다.

FFT 빈에는 중심 주파수가 있습니다. 정확한 빈 주파수에서의 모든 정현파는 정확히 1 FFT 프레임 간격으로 오프셋 된 2 개의 기준점을 참조하여 동일한 위상을 갖거나, 임의의 거리를두고 떨어져있는 2 개의 기준점 또는 2 FFT 프레임에 대해 계산 될 수있는 델타 위상을 갖습니다 (아마 중복) . 위상 보코더의 기본 아이디어는 FFT 빈 중심 주파수가 아닌 경우 해당 주파수의 정현파가 2 오프셋 FFT 프레임의 기준점에서 감지 된 위상과 일치하도록 각 FFT 빈 주파수를 주변 주파수로 약간 조정하는 것입니다.

이 조정 된 주파수는 원래 스펙트럼 시퀀스가 ​​주파수 또는 시간 영역에서 스케일링 된 경우에도 재 합성 된 프레임에서 더 연속성을 나타내는 파형의 세분화 된 재 합성에 사용될 수 있습니다. 이들 오프셋 주파수는 또한 주파수 추정을 위해 또는 피치 추정 방법의 일부로서 사용될 수있다. 피치 추정과 사운드 재 합성을 사용하면 한 피치에서 사운드를 가져 와서 다른 피치를 제외하고 거의 동일한 사운드로 재 합성을 할 수 있습니다.


2

다음 기사에서는 오디오 신호의 시간 및 피치 수정을 처리하기위한 PTTA (Pitch Synchronous-Add-Add) 기술뿐만 아니라 STFT (Short-Time Fourier Transform) 기반 위상 보코더에 대해 설명합니다.

Moulines, E. & Laroche, J.
" 음성의 음계 및 시간 척도 수정을위한 비모수 적 기법 ",
Speech Communication, 1995.
(일부 PDF 버전은 Google Scholar 링크에서 제공 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.