휴먼 스피치 노이즈 필터


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.