휴먼 스피치 노이즈 필터


17

비 음성을 감쇠시키는 필터를 아는 사람이 있습니까? 음성 인식 소프트웨어를 작성 중이며 사람의 음성을 제외한 모든 것을 필터링하고 싶습니다. 여기에는 배경 소음, 삐걱 거리는 마이크에서 생성 된 소음 또는 배경 음악이 포함됩니다. 파워 스펙트럼의 6dB 롤오프를 보상하는 1 차 필터를 이미 구현했지만 여전히 잡음이 들립니다 (음성이 훨씬 선명하게 들리지만). 저역 통과 필터를 사용하려고 생각했지만 다음과 같은 두 가지 이유가 있습니다.

  1. 저역 통과 프리 필터가 나머지 음성 처리를 방해하는지 여부를 모르겠습니다. 비록 사람의 귀가 20kHz 미만의 소리 만 감지 할 수 있지만, 음성 처리에 필요할 수있는 고차 고조파를 제거 할 위험이 없습니다. 나는 기회를 원하지 않습니다).

  2. 특정 자음 (예 : f, h 및 s)의 자극은 거의 전적으로 백색 잡음입니다. 말하자면 좋은 노이즈 를 제거하는 노이즈 필터를 구현하고 싶지 않습니다 .

이상적으로는 마이크에 대고 말하는 사람의 연설 만 남길 원합니다. 아이디어가 있거나 빠진 것이 있으면 알려 주시기 바랍니다. 매우 감사!


나는 생각한다. 나는 여기에 잘 대답 된 비슷한 질문 (필터 및 음향 처리)을 보았 기 때문에 열어 두겠습니다.
Zetta Suro


경험 법칙 : 특정 언어 또는 특정 플랫폼에서 주어진 DSP 알고리즘을 구현하는 방법을 알고 싶다면 SO에 대한 주제입니다. 특정 프로그래밍 각도가없는 DSP 알고리즘 / 기술에 대한 질문이라면 DSP.SE에 속합니다 (더 나은 품질의 답변을 얻는 경향이 있습니다).
Paul R

알았어 여기로 마이그레이션 했습니까? 그렇다면 감사합니다. 마이그레이션 방법을 알 수 없으므로 여기에서 다시 요청했습니다.
Zetta Suro

내가 아닌-나는 그것을 플래그하고 중재자가 그것을 움직일 수 있는지 묻습니다. 그래서 TPTB 중 하나가 그것을했다고 생각합니다.
Paul R

답변:


8

전화 통신에 사용되는 음성 통신 채널의 주파수 응답은 일반적으로 300Hz ~ 3kHz입니다. 비록 이것이 보통의 말에서 많은 에너지를 거부하지만, 명료도는 여전히 좋습니다. 주된 문제는 "p"와 "t"와 같은 특정 폭발성 자음 은 고주파수 성분없이 구별하기가 조금 어려울 수 있습니다 .

따라서 소비자 오디오에서 일반적으로 사용되는 전체 20Hz-20kHz 대역폭과 음성 통신에 사용되는 가장 적극적인 필터링 사이의 "스위트 스폿"을 찾고있을 것입니다 (위 참조). 50Hz에서 8kHz 사이의 대역 통과 필터로 시작하는 것이 좋습니다. SNR을 최대 몇 dB만큼 향상시킬 수 있지만 특히 고주파 배경 잡음이 많은 경우 도움이 될 수 있습니다.


감사! 내 친구가 실제로 음성 채널을 제안했지만 일부 자음의 에너지가 너무 많이 감쇠 될 것이라고 생각했습니다. 50Hz ~ 8kHz를 시도하고 어떻게 작동하는지 보겠습니다!
Zetta Suro

2
내가 찾던 "빠른"솔루션이기 때문에이 답변을 선택하면됩니다. 나머지 답변은 장기적으로 도움이 될 것이므로 확실히 살펴볼 더 많은 연구가 필요하지만 이것은 원래 내가 찾던 간단한 필터 솔루션입니다.
Zetta Suro

5

음성 대역폭과 일치하는 통과 대역 필터를 사용하면 도움이됩니다.

여러 대의 마이크가있는 경우 (이제 핸드폰에서와 같이) ICA와 유사한 방법으로이를 활용할 수 있습니다. 그러나 귀하의 질문은 하나의 입력 만 가지고 있음을 암시합니다.

당신이하고 싶은 것은 "단일 센서"라고도 불리는 "1 마이크로폰 소스 분리"(로 웨이스의 획기적인 종이에서 가져온 이름)입니다. 경고 : 이것은 해결 된 문제와는 거리가 멀고, 가우스 혼합 모델 + FST와 달리 음성 인식을위한 알고리즘과는 달리 알고리즘이나 접근 방식이 "명확한 승자"가되지 않는이 분야의 모든 연구는 최근에 이루어졌습니다.

이를위한 좋은 프레임 워크는 Wiener 필터링을 통하는 것입니다. Benaroya et al. "위너 필터링 및 다중 창 STFT를 기반으로하는 단일 센서 소스 분리"(섹션 1 및 2를 읽고, 실제로 필요한 경우가 아니면 다중 해상도 문제를 신경 쓰지 마십시오). 요컨대, 신호의 STFT를 계산하고 각 STFT 프레임에 대해 음성 스펙트럼 및 잡음 스펙트럼의 추정치를 얻으려고 시도하고 Wiener 필터링을 사용하여 음성 스펙트럼의 최상의 추정치를 복구합니다 (이 스펙트럼을 "소프트 마스킹"하는 것과 유사합니다.

문제는 이제 다음과 같습니다. STFT 프레임이 주어지면 음성 및 잡음 요소를 추정하십시오. Benaroya의 논문에 설명 된 간단한 접근 방식은 Vector-quantization을 통해 이루어집니다. 많은 스피커가 몇 시간 동안 연설을하고 STFT를 계산하고 LBG를 실행하여 512 또는 1024 개의 일반적인 음성 프레임의 코드북을 찾습니다. 소음에 대해서도 같은 일을합니다. 이제 입력 신호의 프레임이 주어지면 음성 및 잡음 기반에 음이 아닌 (증가 기울기 업데이트 절차가 논문에 설명되어 있음) 투영하고 음성 및 잡음 추정값을 얻습니다. 음이 아닌 프로젝션을 다루지 않으려면 가장 가까운 이웃을 사용하십시오. 이것은 "단일 센서 소스 분리"부서에서 작동 할 수있는 가장 간단한 것입니다.

음성 인식 시스템은 실제로 분리 시스템에 대한 일부 입력을 제공 할 수 있음에 유의한다. 음성 인식 시스템을 사용하여 첫 번째 디코딩을 수행하십시오. 각 프레임에 대해 최고 점수를 얻은 가우시안의 평균 MFCC 벡터를 가져옵니다. 다시 스펙트럼으로 반전시킵니다. 붐, 스피치와 같은 비트의 스펙트럼 위치를 제공하는 마스크가 있으며 Wiener 필터링을위한 입력으로 사용할 수 있습니다. 이것은 손을 흔드는 것처럼 들리지만 요점은 소스를 분리하기 위해 좋은 모델이 필요하다는 것이며, 음성 인식 시스템은 음성 신호에 대한 좋은 생성 모델의 지옥입니다.


1

문제가 ICA를 설명하는 데 자주 사용되는 "칵테일 파티"문제와 매우 유사하기 때문에 ICA (Independent Component Analysis)를 수행하는 것이 좋습니다. 요컨대 ICA는 서로 독립적 인 신호 구성 요소를 찾습니다. 이는 환경의 다른 소음 (식기 세척기, 백색 소음, 팬 소음)이 음성의 신호 소스와 독립적이며 분리 될 수 있다고 가정합니다.

ICA는 PCA (원칙 구성 요소 분석)와 유사하지만 기본 축의 분산을 최대화하는 대신 독립성을 최대화합니다. 사용중인 코딩 환경에 연결해야하는 ICA 구현에는 여러 가지가 있습니다.


4
ICA에는 분리 할 소스가있는만큼 많은 입력 신호가 필요합니다. 음성 잡음 제거에서는 신호가 하나만 남으므로 ICA는 도움이되지 않습니다.
pichenettes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.