[ICASSP-2018] A Wavenet for Speech Denoising

안녕하세요. 왜 갑자기 안읽던 분야의 논문을 들고왔는지 의아해하시는 분들이 있을 것 같습니다만… 감정인식 과제의 1차년도가 제 아이디어가 많이 들어가서 그에 대한 책임감으로… 해당 논문을 읽어볼 필요가 생겨서 읽게 되었습니다. (음성 도메인에 대한 지식이 많이 없어서 내용이 좀 부족할 수도 있습니다.)

Introduction

일단 시작하기전에 해당 방법론은 Wavenet이라고 하는 모델을 기반으로 작동합니다. 구글의 딥마인드에서 Wavnet이라고 하는 딥러닝 기반의 TTS 모델을 공개했는데요. 그 모델의 구조를 이용해서 Denoising에서 사용합니다.

그럼 왜 딥러닝 기반의 모델을 채택했을까요? 그럼 기존의 방법론의 작동 원리를 알아야합니다. 기계학습 수업을 들어보신 분들은 아시겠지만, 음성신호처리에서 Spectrogram이라는 것을 사용하는데요. 기존의 방법론들이 바로 이 spectorgram을 사용합니다. 그리고 여기서 문제가 생기죠.

Spectogram은 STFT(Short Time Fourier Transformation)을 바탕으로 생성됩니다. 이 과정에서 phase 정보를 손실하고 magnitude 정보만을 사용하게 됩니다. 하지만 딥러닝 모델은 raw audio를 사용하기 때문에 이러한 정보 손실이 발생하지 않는다는 점에서 딥러닝 기반의 모델을 써보려는 연구 흐름이 진행되고 있고, 해당 논문에서는 TTS에서 높은 성능을 보여준 Wavenet을 이용해서 Denoising에 적용해보는 것을 중점적으로 다루고 있습니다.

Wavenet

기본적으로 N개의 음성 데이터 배열이 입력으로 들어온다면, 각 데이터가 음성 데이터일 확률을 학습하고 이를 통해서 특정 갯수의 입력 이후에 들어올 확률이 높은 음성 데이터를 생성하는 것이 Wavenet의 기본적인 작동 구조입니다. 그럼 자세한 구조를 알아보겠습니다. (참고용 그림은 https://joungheekim.github.io/2020/09/17/paper-review/ 에서 가져왔습니다.)

일단 [그림 2]의 왼쪽 그림에서 확인할 수 있듯이 Residual layer가 구성되어 있는데요. 이 Residual layer를 시간의 흐름에 따라 샘플의 갯수 만큼 hierarchical 하게 쌓은 구조를 가지고 있습니다.

[그림 2]의 오른쪽이랑 설명을 같이 보시면, Causal-Dilated Conv라는 설명이 등장하는데요. 이 구조는 Causal Convoultion과 Dilated Convolution을 함께 사용한 구조라고 합니다. Causal Convoultion이 RNN에서 처리하는 것처럼 sequential하게 conv 연산을 태우는 것이고, Dilated는 그렇게 하면서도 연산량을 줄이고, receptive field를 키우기 위해서 적용한 방법론이라고 하네요.

그리고 µ-law quantization을 적용했다고 합니다. (Wavenet에서는 µ-law companding이라고 함)위에서 설명한 것 처럼 wavenet은 적절한 음성 데이터일 확률을 학습해서, 예측할 때 이 확률에 맞는 데이터를 반환하게 되는데요. 16비트일 경우에 이 확률값의 범위가 2^16으로 예측 범위가 매우 넓어진다는 문제점이 있습니다. 그래서 µ-law quantization을 이용해서 예측 범위를 256으로 줄여서 사용합니다.

추가적으로 layer를 쌓으면서 skip connection도 있고 context stack이라고 FPN같은 방법론도 들어가 있는데 특별한 설명은 없어서 넘어가도록 하겠습니다. 그리고 당연히 sequential한 모델 구조 때문에 병렬 처리가 안된다고 하네요. 이게 단점이라고 합니다.

Wavenet for Speech Denoising

그래서 이 Wavenet의 구조를 따른 Denoising 모델은 [그림 3]과 같습니다. 눈에 보이는 가장 큰 차이점은 Causal Convoultion을 사용하지 않는다는 것과 µ-law quantization을 사용하지 않는 다는 점입니다.

일단 Causal convolution이 사라지면서 [그림 4]와 같은 구조로 변경되었습니다. 그러면서 예측에 있어서 더이상 과거 샘플만을 순차적으로 활용하는 것이 아니라 미래 샘플도 활용하는 구조로 변경되었습니다. 사실 제가 음성 논문을 읽어보는 사람이 아니라서, 이 부분에 근거가 무엇인지는 모르겠는데 미래 샘플이 보유한 정보량이 성능에 영향을 많이 주는 것 같습니다. 이러한 문제 때문에 아주 짧은 정보라도 반영을 해서 사용하려는 것 같습니다.

그리고 µ-law quantization을 사용하지 않고 real-value를 바로 예측하는 방식으로 학습을 진행하는데요. Wavenet에서는 연산량을 줄이고 좋은 성능을 가져가는 방법이었지만, Denosing에서는 노이즈가 증폭되는 문제점이 있어서 제거하였다고 합니다.

이러한 차이점에 Loss 또한 Energy-conserving Loss를 사용하는데요. L1 Loss를 두개 붙인거랑 뭐가 다를까 싶긴한데, 설명이 따로 적혀있지는 않네요. S_t는 원본 음성을 뜻하고, b_t는 노이즈를 뜻합니다. 학습에서는 합성된 음성 m_t로 부터 S_tb_t를 분리해서 얼마나 잘 분리했는지 차이를 계산한다고 보시면 됩니다.

추가적으로 볼만한 부분이 Target field prediction과 Conditioning이라는 기법인데요. Target field prediction은 [그림 5]와 같이 하나의 샘플만을 예측하는 것이 아니라 구간 단위로 여러 샘플을 모아 예측하는 것입니다. 여러 샘플을 모은다고 하더라도 잘 보시면, 결국 forward하는 영역이 겹치는 것을 그림에서 보실 수 있는데요. 이런 구조를 통해서 연산량은 유지하면서 더 높은 성능을 낼 수 있었다고 합니다. Conditioning 같은 경우에는 Wavenet 모델이 TTS에서 시작됬기 때문에 등장한 부분입니다. 원래 TTS는 특정인의 목소리를 모사한 경우라 말하는 사람이 누구인지도 같이 라벨로 줘야했는데요. Denoising의 목적은 노이즈를 없애는거라 발화자에 종속되면 안된다는 문제점이 생깁니다. 그래서 Unknown speaker에 대응할수 있도록 추가적인 라벨(0)을 사용해서 이 문제를 해결한 것이 Conditioning이라고 하네요.

Experiments

데이터셋은 일반적인 음성같은 경우에는 voice bank corpus를 이용해서 학습했다고 합니다. Denoising 방법론이라 그럼 노이즈도 필요한데, 이 노이즈 데이터셋은 DEMAND(Diverse Environments Multichannel Acoustic Noise Database)를 이용했다고 합니다. DEMAND 데이터셋은 13개의 서로 다른 환경의 노이즈를 가지고 있고, 학습에서 8종을 사용하고 테스트에서는 5종을 사용합니다. 여기에 2종의 인공 소음을 추가해서 학습에서만 사용합니다.

그 실험 결과가 [표 1]에 있는데요. 일단 MOS(Mean Opinion Score)라는 평가지표를 사용하는데 1부터 5까지 5에 가까울수록 더 좋은 성능을 보이는 평가지표입니다. 이 metric을 이용해서 SIG/BAK/OVL의 측면에서 평가를 진행합니다. (SIG : 신호가 얼마나 왜곡되어 있는가? / BAK : 배경 잡음이 얼마나 들리는가? / OVL : 전체적인 평가)

이 평가지표는 기계가 채점하는건 아니고, 인간(평가자)이 직접 점수를 골라서 평가하는 방식인데요. 4점 정도면 기계인 것을 알수는 있는데 거슬리지는 않는 정도라고 보면 됩니다.

[표 1]에서 Noisy signal의 경우 노이즈가 포함된 음성이고, Wiener filetering의 경우에는 노이즈 제거에서 많이 쓰이는 필터링 방법론입니다. 그래서 이 두 방법론은 베이스라인으로 보시면 됩니다. 그랬을 경우에 단순 필터링 방법론보다 전반적인 성능이 조금 더 좋은 것을 볼 수 있습니다.

그리고 얼마나 노이즈를 잘 제거했는지에 대한 인지 실험을 추가적으로 수행했는데요. 평가자들에게 4가지 데이터(노이즈가 합성된 음성, 원본 음성, Wiener filtering이 적용된 음성, 제안된 방법론이 적용된 음성)을 랜덤하게 들려주면서 앞서 설명드린 MOS 방식으로 평가를 진행했습니다. 이때는 노이즈를 얼마나 잘 제거했는지를 평가했는데, 베이스라인 방법론 대비 꽤 큰 성능 향상을 보임을 확인할 수 있습니다.

Conclusion

아예 처음보는 분야 논문이라 내용이 많이 어렵네요. 처음 보는 용어들이 많이 나와서 검색을 좀 많이 했습니다. 사실 감정인식 과제에서 쓸 베이스라인인 논문이었는데요. 갑자기 불안해져서 제대로 좀 읽어봤는데, 문제가 없는 것 같아서 참 다행입니다 ㅎㅎ…

Author: 광진 이

3 thoughts on “[ICASSP-2018] A Wavenet for Speech Denoising

  1. 안녕하세요
    읽다보니 WaveNet의 µ-law companding 에 대해서 정규화방식으로 값을 줄이게 되는지 궁금하네요.
    꼼꼼한 리뷰 감사합니다.

  2. 좋은 리뷰 감사합니다.
    해당 논문을 정리하자면 결국 다음과 같은 듯 합니다. “WaveNet을 기반으로 하지만 Causal Convoultion과 µ-law quantization은 사용하지 않되, Target field prediction과 Conditioning을 추가하였다.”
    게다가 평가지표 중 실제 사람들이 느끼는 정성적 결과가 포함된다니 신기하네요.

    그런데 몇 가지 궁금한 것이 있는데요.
    우선, 저자가 문제삼은 “phase 정보 손실” 에 대하여 궁금한데요. 저자는 주파수 도메인으로 변환하는 푸리에 변환을 사용하지 않는 딥러닝 기반의 방법론을 제안한 것이기에 phase 정보 손실이 없다고 이해하면 될까요? 혹시 이에 대한 저자의 추가적인 설명혹은 기존 방법과의 비교 테이블은 없..나요?

    두번째로 베이스라인으로 잡은 Wiener filetering에 대해서도 궁금한데요. 해당 디노이즈 필터가 푸리에 변환을 사용하는 기계학습 기반의 방법론인건가요? 혹시 논문에 베이스라인 대비 제안하는 방법론의 추가적인 장점(?)의 언급은 없을까요?

  3. 안녕하세요. 좋은 리뷰 감사합니다.

    casual conv와 dilated conv에 대해서 잘 모르는데 설명해주셔서 덕분에 알게 되었습니다. 감사합니다.

    읽으면서 몇가지 의문점이 있었는데요.

    1) Introduction뒤 Wavenet을 설명하는 부분에서 “각 데이터가 음성 데이터일 확률을 학습하고”라고 작성한 부분이 있는데, 이 말은 음성 데이터가 아닌 다른 데이터가 들어올 확률도 있다는 것으로 해석할 수 있을까요? 애초에 N개의 음성 데이터 배열이 입력으로 들어오는데 왜 각 데이터가 음성 데이터일 확률을 학습해야 하는지 잘 모르겠습니다,

    2) 그리고 아직 제가 배움이 부족하여 µ-law quantization (µ-law companding)가 정확히 무엇인지 모르겠어서 잘 이해를 하지 못했는데 혹시나 간략히 설명해주시면 감사하겠습니다😀

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다