스테레오 오디오 신호에서 보컬 부분을 추출하는 방법은 무엇입니까?


15

이제 MP3 파일을 처리 중이며이 문제가 발생합니다. 내 MP3는 스테레오 인코딩입니다. 내가하고 싶은 것은 추가 처리를 위해 보컬 부분을 추출하는 것입니다 (출력 신호 모드, 모노 또는 스테레오가 모두 괜찮습니다).

내가 아는 한, 오디오는 MP3에서 다른 분리 된 하위 주파수 대역으로 인코딩됩니다. 차단 주파수를 적절히 설정 한 고역 통과 / 저역 통과 필터를 통해 보컬 범위로 신호를 제한 할 수 있다고 생각합니다. 그러나이 경우 결과에는 순수한 음악 신호의 일부가 포함되어야합니다. 인터넷 검색 후, 나는 배경 신호를 먼저 계산할 수 있다고 생각합니다 (보컬 부분이 위상 제거라고 불리는 스테레오 오디오에 집중되어 있다고 가정하면 한 채널을 다른 채널의 신호로 추가하여 반전시킵니다). 이 변환 후 신호는 모노입니다. 그런 다음 원래 스테레오를 배경 신호를 추출하는 모노로 병합해야합니다.

효과가 주어지면 어느 것이 선호됩니까 (또는 다른 해결책 :)? 두 번째 채널 인 경우 두 채널 A 및 B를 사용하여 배경을 계산할 때 (BA) 또는 (AB)를 사용합니까? 두 채널을 병합 할 때와 같이 산술은 충분히 정확합니까? 또는 각 채널을 2 배로 다운 샘플링하고 다운 샘플링 된 신호를 모노 결과로 인터리브 할 수 있습니까?

감사와 안부.

답변:


21

우선, mp3 파일에서 데이터가 인코딩되는 방식은 압축 도메인 처리를 목표로하지 않는 한 (어리석은) 질문과 관련이 없습니다. 따라서 알고리즘이 압축 해제 된 시간 영역 데이터에서 작동한다고 가정 할 수 있습니다.

합 / 차는 보컬 억제 (추출 아님)에 대한 매우 기본적인 트릭입니다. 이는 보컬이 스테레오 필드의 중앙에서 믹스되고 다른 악기는 측면으로 패닝된다는 가정을 기반으로합니다. 이것은 거의 사실이 아닙니다. LR과 RL은 동일하게 들리며 (인간의 귀는 글로벌 위상 변이에 민감하지 않습니다) 악기를 중앙에 혼합하지 않고도 모노 믹스를 제공합니다. 문제는 배경을 복구 한 후에는 어떻게 하시겠습니까? 중앙 (평균) 신호에서 억제하려고합니까? 이것은 작동하지 않습니다, 당신은 (L + R) / 2-(L-R)을 할 것입니다, 이것은 매우 흥미롭지 않습니다 ... 당신은 그것들의 선형 조합 (평균 및 "중심 제거")을 시도 할 수 있습니다. 그것에서 나올 것입니다!

필터링 접근법과 관련하여 : 음성의 f0은 1000Hz를 거의 넘지 않지만 고조파는이를 넘어 설 수 있습니다. 가장 높은 주파수를 제거하면 자음 (특히 sss, chhh)이 불쾌하게됩니다. 일부 남성 음성은 100Hz 미만입니다. 그래도 50 또는 60Hz (베이스, 킥) 미만을 안전하게자를 수 있습니다.

탐색 할 가치가있는 음성 분리의 일부 최근 개발 :

  • Jean Louis Durrieu의 배경 NMF + 고조파 빗> 필터 모델. 파이썬 코드는 여기에 있습니다 .
  • Rafii의 배경 추출 방식 . Electro, Hip-hop과 같은 매우 반복적 인 패턴으로 컴퓨터 제작 음악에서 코드를 작성하고 잘 작동합니다.
  • Hsu는 f0 탐지, 추적 및 마스킹을 기반으로 접근했습니다. "음악 반주에서 노래 피치 추출 및 음성 분리를위한 직렬 알고리즘"(액세스 가능한 PDF를 찾을 수 없음).

4

참조 주셔서 감사합니다! Summer_More_More_Tea의 응용 프로그램에 관심이있을 수있는 드럼 향상 에 대한 작업을 언급하지 않았습니다. 글쎄, 그 모든 것은 실제로 당신이하고 싶은 일에 달려 있습니다. 특정 "최종 응용 프로그램"을 염두에두고 있습니까?

나는 피케 네트의 위 진술에 전적으로 동의합니다. 그러나 완성한 보컬 향상은 결과를 향상시키기 위해 노래방 트랙 생성에 관한 Matti Ryynänen의 일부 작품에서도 사용되었다고 말해야합니다.

질문에 대답하려면 :

효과가 주어지면 어느 것이 선호됩니까 (또는 다른 해결책 :)?

피케 네트가 말했듯이, 저역 통과 / 고역 통과 필터링은 인간 음성의 고조파 구조 (보다 일반적으로 "흥미로운"사운드, 즉 정현파 이외의 것) 때문에 실패 할 수밖에 없습니다 ... ).

두 번째 채널 인 경우 두 채널 A 및 B를 사용하여 배경을 계산할 때 (BA) 또는 (AB)를 사용합니까? 두 채널을 병합 할 때와 같이 산술은 충분히 정확합니까?

다시 말하지만, 두 번째 방법은 중앙에있는 신호 만 제거 할 수는 있지만 검색 할 수 없기 때문에 수행하지 않습니다. 다시 말해, 보컬도 "중앙"에 있으며 보컬 전용 신호를 얻는 간단한 수학은 없습니다.

또는 각 채널을 2 배로 다운 샘플링하고 다운 샘플링 된 신호를 모노 결과로 인터리브 할 수 있습니까?

er ... 위에서 제안한대로 채널 평균을 계산하여 모노 채널 신호를 얻는 것은 의미가 있으며 신호의 스펙트럼 특성을 손상시키지 않습니다 (스테레오 신호가 생성되지 않은 경우). 따라서 기본적으로 이전과 동일한 음악 콘텐츠가있는 모노 신호를 얻습니다.

각 채널을 정확하게 다운 샘플링한다는 것은 먼저 저역 통과 필터 (경우에 따라 차단 주파수 sampling_rate / 4)를 적용한 다음 매 2 개의 샘플을 안전하게 가져올 수 있음을 의미합니다. 그러나 다운 샘플링 된 채널을 인터리빙하는 것에 대해 말할 것도 많지 않습니다. 대부분의 경우 신호의 스펙트럼 특성을 손상시킵니다. 당신은 아마 그것을 원하지 않을 것입니다.

실제로, 저역 통과 필터링의 동작은 2 개의 샘플마다 0으로 설정되고 푸리에 영역에서 이들 0의 리드를 유지하여 고주파수 성분에 유지 된 저주파 성분을 "미러링"합니다. 샘플링 이론에 대한 신호 처리 교훈을 기억하십시오. 임펄스 (또는 디 라크) 시퀀스를 곱하면 푸리에 도메인의 다른 디 라크 시퀀스와 충돌이 발생합니다. 즉,이 경우 신호의 주파수 스펙트럼이 반복됩니다 샘플링주기와 동일한 주기로 주파수 축을 따라.

일반적으로 다운 샘플링시 0을 제거합니다 (새로운 샘플링 속도를 가정하기 때문에). 그러나 여기에서 유지하면 매우 귀찮은 추가 고주파 성분이 발생합니다. 이 신호를 인터리빙해도 문제가 해결되지 않습니다.

글쎄, 대체로 짧은 대답 : 그렇게하지 마십시오 . :-)

마지막으로, LVAICA 2012 컨퍼런스를 위해 개발 한 GUI를 사용하는 것이 좋습니다. 여기에는 git repo 가 있습니다. 여전히 디버깅하고 개선 중이므로 의견을 환영합니다 : D

희망이 도움이됩니다!

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