brunch

You can make anything
by writing

C.S.Lewis

by 서진호 May 11. 2020

WaveNetEQ를 사용한 구글 듀오 오디오 품질 개선

2020년 4월 1일(수) 구글 AI 리서치 블로그

온라인 전화는 업무를 능률화하고 사랑하는 사람들과 연결함으로써 수백만 명의 사람들의 일상생활의 일부가 되었습니다. 인터넷을 통해 전화를 전송하기 위해 전화의 데이터는 패킷(packet)이라고 하는 짧은 청크(chunk)로 분할됩니다. 이 패킷은 네트워크를 통해 발신자에서 수신자로 이동하여 재조립되어 연속적인 비디오 및 오디오 스트림을 만듭니다. 그러나 패킷은 종종 다른 쪽 끝에 잘못된 순서로 또는 잘못된 시간에 도착하며, 일반적으로 지터(jitter)라고 하는 문제이며 때로는 개별 패킷이 완전히 손실될 수 있습니다. 이와 같은 문제는 수신기가 갭을 시도하고 채워야 하기 때문에 통화 품질이 저하되며 오디오 및 비디오 전송 모두에 널리 퍼져있는 문제입니다. 예를 들어, Google Duo 통화의 99%는 패킷 손실, 과도한 지터 또는 네트워크 지연을 처리해야 합니다. 이러한 통화 중 네트워크 문제로 인해 총 오디오 지속 시간의 3% 이상이 20 %, 8% 이상이 손실됩니다.

[그림 1] 패킷 손실로 이어지는 단순화된 네트워크 문제 다이어그램으로 안정적인 실시간 통신을 위해 수신기가 이를 처리해야 합니다.

안정적인 실시간 통신을 보장하려면 수신기에서 필요할 때 누락된 패킷을 처리해야 합니다. 특히, 새로운 오디오가 지속적으로 제공되지 않으면 자그마한 결함(glitch)과 갭을들을 수 있지만 동일한 오디오를 반복해서 반복하는 것은 부산물(artifact)을 생성하고 전체 통화 품질을 저하시키므로 이상적인 솔루션이 아닙니다. 누락된 패킷을 처리하는 프로세스를 패킷 손실 은닉 (PLC, Packet Loss Concealment)이라고 합니다. 수신기의 PLC 모듈은 패킷 손실, 과도한 지터 또는 일시적인 네트워크 결함으로 인해 발생하는 간격을 메우기 위해 오디오(또는 비디오)를 생성하여 데이터가 없습니다.


이러한 오디오 문제를 해결하기 위해 현재 Duo에서 사용되는 새로운 PLC 시스템인 WaveNetEQ를 소개합니다. WaveNetEQ는 DeepMind의 WaveRNN 기술 기반으로 generative model로, 대규모 음성 데이터 모음을 사용하여 짧은 음성 세그먼트를 사실적으로 계속 진행하여 누락된 음성의 원시 파형을 완전히 합성할 수 있도록 훈련됩니다. Duo 통화는 종단 간 암호화되므로 모든 처리는 기기에서 수행해야 합니다. WaveNetEQ 모델은 전화기에서 실행할 수 있을 정도로 빠르며, 현재 사용 중인 다른 시스템보다 최신 오디오 품질과 보다 자연스러운 사운드 PLC를 제공합니다.


듀오를 위한 새로운 PLC 시스템

다른 많은 웹 기반 통신 시스템과 마찬가지로 Duo는 WebRTC 오픈 소스 프로젝트를 기반으로 합니다. 패킷 손실의 영향을 감추기 위해 WebRTC의 NetEQ 컴포넌트는 신호 처리 방법을 사용하여 음성을 분석하고 작은 손실(20ms 이하)에 대해서는 잘 작동하지만 누락된 패킷 수가 60ms 이상의 간격으로 이루어지는 경우에 소리가 나지 않는 부드러운 연속성을 생성합니다.  후자의 경우, 연설은 로봇적이고 반복적이며, 불행히도 많은 인터넷 음성 발신자에게 친숙한 특징적인 소리입니다.


패킷 손실을 보다 효과적으로 관리하기 위해 NetEQ PLC 컴포넌트를 수정된 버전의 WaveRNN으로 교체합니다. 이 모델은 오토리그레시브(autoregressive) 모델과 컨디셔닝 네트워크(conditioning network)의 두 부분으로 구성된 음성 합성을 위한 recurrent neural network 모델입니다. 오토리그레시브 네트워크(autoregressive network)는 신호의 연속성을 담당하며 생성된 각 샘플이 네트워크의 이전 출력에 의존하도록 하여 음성의 단기 및 중간 구조를 제공합니다. 컨디셔닝 네트워크는 오토리그레시브 네트워크(autoregressive network)에 영향을 주어 보다 느리게 움직이는 입력 기능과 일치하는 오디오를 생성합니다.


그러나 WaveRNN은 이전의 WaveNet과 마찬가지로 TTS(text-to-speech) 응용 프로그램을 염두에 두고 만들어졌습니다. TTS 모델로서 WaveRNN은 무엇을 말해야 하는지에 대한 정보를 제공합니다. 컨디셔닝 네트워크는 이 정보를 단어와 prosody 기능(즉, 억양이나 피치와 같은 텍스트가 아닌 모든 정보)을 구성하는 음소(phonmes) 형태로 입력으로 직접 수신합니다. 어떤 식으로든 컨디셔닝 네트워크는 “see into the future” 할 수 있으며, 오토리그레시브 네트워크를 올바른 파형으로 조정하여 일치시킬 수 있습니다. PLC 시스템 및 실시간 통신의 경우 이 콘텍스트는 제공되지 않습니다.


기능적인 PLC 시스템의 경우, 현재 음성(예: 과거)에서 상황 정보를 추출하고 그럴듯한 소리를 생성하여 계속해야 합니다. 우리의 솔루션인 WaveNetEQ는 동시에 recurrent neural network를 사용하여 패킷 손실 이벤트 동안 오디오 연속을 제공하고 컨디셔닝 네트워크는 음성 특성과 같은 장기적인 기능을 모델링합니다. 과거 오디오 신호의 스펙트로그램(spectrogram)은 컨디셔닝 네트워크의 입력으로 사용되며, 이는 프로소디(prosody) 및 텍스트 콘텐츠에 대한 제한된 정보를 추출합니다. 이 압축된 정보는 오토리그레시브 네트워크에 공급되며, 이 정보는 최근 과거의 오디오와 결합하여 파형 영역의 다음 샘플을 예측합니다.


이는 오토리그레시브 네트워크가 마지막으로 생성한 샘플을 사용하지 않고 다음 단계에 대한 입력으로 훈련 데이터에 있는 실제 샘플을 수신하는 WaveNetEQ 모델을 훈련하는 동안 수행된 절차와 약간 다릅니다. Teaching Force라고 하는 이 프로세스는 예측의 품질이 여전히 낮은 초기 훈련 단계에서도 모델이 중요한 정보를 학습하도록 합니다. 모델이 완전히 훈련되고 음성 또는 화상 통화에 사용되면, Teaching Force는 첫 번째 샘플의 모델을 "warm up" 하는 데에만 사용되며, 그 후 자체 출력은 다음 단계의 입력으로 다시 전달됩니다.


[그림 2]

[그림 2] 상세 설명 - WaveNetEQ 아키텍처. 추론하는 동안, 우리는 가장 최근의 오디오를 Teaching Force에 의해 오토리그레시브 네트워크를 "warm-up" 합니다. 그 후, 모델에는 다음 단계를 위한 입력으로 자체 출력이 제공됩니다. 더 긴 오디오 부분의 MEL spectrogram은 컨디셔닝 네트워크의 입력으로 사용됩니다.


이 모델은 Duo의 jitter buffer 오디오 데이터에 적용됩니다. 패킷 손실 이벤트 후에 실제 오디오가 계속되면 합성 오디오 스트림과 실제 오디오 스트림을 완벽하게 병합합니다. 두 신호 사이의 최적 정렬을 찾기 위해 모델은 필요한 것보다 약간 더 많은 출력을 생성 한 다음 서로 cross-fades 합니다. 이렇게 하면 전환이 매끄럽고 눈에 띄는 노이즈가 방지됩니다.

[그림 3]

[그림 3] 60ms 이동 범위에서 오디오의 PLC 이벤트 시뮬레이션. 파란색 선은 PLC 이벤트의 과거 및 미래 부분을 포함하여 실제 오디오 신호를 나타냅니다. 각 시간 단계에서 주황색 선은 합성 오디오를 나타냅니다. WaveNetEQ는 오디오가 수직 회색 선에서 잘려 나 갔는지 예측합니다.


[그림 4]

[그림 4] 상세 설명 - 오디오 클립 : WebRTC의 기본 PLC 시스템인 NetEQ와 모델 WaveNetEQ의 비교. 오디오 클립을 LibriTTS에서 가져와서 오디오의 10 %를 60 또는 120ms 청크로 떨어 뜨린 다음 PLC 시스템으로 채웠습니다.


견고성 보장

PLC 동안 중요한 요소 중 하나는 네트워크가 다른 스피커 또는 배경 소음의 변화를 포함하여 가변 입력 신호에 적응할 수 있는 능력입니다. 광범위한 사용자에 대한 모델의 견고성을 보장하기 위해 이를 통해 모델은 일반적인 언어 대신 인간의 음성 특성을 배울 수 있습니다. 특정 언어의 속성인 48개 언어로 100개가 넘는 스피커가 포함된 음성 데이터 세트에 대해 WaveNetEQ를 훈련했습니다. WaveNetEQ가 기차역이나 식당에서 전화 응답과 같은 시끄러운 환경을 처리할 수 있도록 다양한 배경 소음과 혼합하여 데이터를 보강합니다.


우리의 모델은 말을 그럴듯하게 계속하는 방법을 배우지만, 이것은 짧은 규모에서만 사실입니다. 음절을 완성할 수는 있지만 단어 자체는 예측할 수 없습니다. 그 대신 더 긴 패킷 손실을 위해 모델이 120 밀리 초 후에 침묵을 만들 때까지 점차 사라집니다. 모델이 잘못된 음절을 생성하지 않도록 하기 위해 Google Cloud Speech-to-Text API를 사용하여 WaveNetEQ 및 NetEQ의 샘플을 평가했으며 단어 오류율(word error rate), 즉 말을 번역하는 실수의 수에 큰 차이가 없음을 발견했습니다. 본문.


우리는 Duo에서 WaveNetEQ를 실험해 왔습니다. 이 기능은 통화 품질과 사용자 경험에 긍정적인 영향을 미쳤습니다. WaveNetEQ는 Pixel 4 전화의 모든 Duo 통화에서 이미 사용 가능하며 현재 추가 모델로 출시되고 있습니다.


감사의 말

핵심 팀에는 Alessio Bazzica, Niklas Blum, Lennart Kolmodin, Henrik Lundin, Alex Narest, Google의 Olga Sharonova, DeepMind의 Tom Walters가 포함됩니다. 또한 Martin Bruse (Google), Norman Casagrande, Ray Smith, Chenjie Gu 및 Erich Elsen (DeepMind)에게도 감사의 말씀을 전합니다.

 

원본 제목: WaveNetEQ를 사용한 구글 듀오 오디오 품질 개선(Improving Audio Quality in Duo with WaveNetEQ
게시자 : Google Research의 소프트웨어 엔지니어 Pablo Barrera, DeepMind의 연구원, Florian Stimberg
원본 링크: https://ai.googleblog.com/2020/04/improving-audio-quality-in-duo-with.html
Efficient Neural Audio Synthesis 논문: https://arxiv.org/abs/1802.08435
WebRTC 오픈소스 프로젝트: https://webrtc.org
WaveNet launches in the Google Assistant 블로그 : https://deepmind.com/blog/article/wavenet-launches-google-assistant
What is Teacher Forcing? 블로그: https://towardsdatascience.com/what-is-teacher-forcing-3da6217fed1c
LibriTTS 데이터셋: https://research.google/tools/datasets/libri-tts/
이 블로그는 2020년 4월 1일(수), 구글 AI 리서치 블로그 글을 영한 번역한 것입니다. 또한 이 번역 글은 정보 공유 목적으로만 작성했으므로 어떠한 상업용으로 사용할 수 없으며, 원본 저작물 모두 구글에게 저작권이 있음을 알려 드립니다. 


매거진의 이전글 COVID-19 과학 문헌을 탐구하는 NLU 기반 도구
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari