Hugging Face Audio Course: 오디오 처리를 위한 Transformer 구조

반응형

 


 

 

이전 Hugging Face Audio Course에서는 오디오 처리에 대한 간단한 소개와 pipeline을 사용하여 사전 학습된(pre-trained) 모델들을 사용하는 것을 배워보았습니다. 이번 포스팅에서는 오디오 처리를 위한 Transformer 구조에 대해 자세히 알아보도록 하겠습니다. 

 

 


 

 

 

1. Transformer 모델 개요

Transformer 모델은 한 언어에서 다른 언어로의 텍스트 번역 과제에 처음 도입되었습니다. 이 모델의 구조는 인코더(Encoder)와 디코더(Decoder)로 이루어져 있습니다. 

 

 

  • 인코더(Encoder): 입력 텍스트 시퀀스를 받아, 입력 시퀀스의 표현(Representation)을 출력합니다.
  • 디코더(Decoder): 인코더의 입력 시퀀스의 표현(Representation)과 이전에 예측된 토큰들을 사용해 목표 시퀀스를 생성합니다. 

이 아키텍쳐의 핵심은 "Attention Layer"에 있습니다. 어텐션 층은 입력 시퀀스의 특정 부분에 주목하면서 특징을 추출합니다. 더 자세한 Transformer에 대한 설명은 논문이나 Transformer에 대해 잘 설명한 링크를 참조해주세요.

 

 


 

 

2. 오디오 처리에서의 Transformer

오디오 데이터에 Transformer 모델을 적용할 때, 텍스트 데이터에 사용하는 Transformer 모델의 구조를 그대로 사용하지만, 몇가지 변경이 필요합니다. 이러한 변경은 오디오 태스크별 입력 및 출력 형태에 따라 달라집니다. 

 

 

 

  • Automatic speech recognition(ASR): 입력 - 음성, 출력 - 텍스트
  • Speech synthesis(TTS): 입력 - 텍스트, 출력 - 음성
  • Audio classification: 입력 - 오디오, 출력 - 클래스 레이블
  • Voice conversion / Speech enhancement: 입력, 출력 - 오디오

 

3. 오디오 데이터의 모델 입력

오디오 모델의 인풋은 텍스트나 소리가 될 수 있습니다. 이러한 인풋을 Transformer 모델이 이해할 수 있도록 embedding vector로 변환합니다. 

 

1) Text input

Text-to-speech 모델은 텍스트를 입력으로 받아 음성을 출력합니다. 입력 텍스트는 먼저 토큰화되어 텍스트 토큰 시퀀스를 만듭니다. 이 시퀀스는 토큰을 512차원 벡터로 변환하기 위해 Input embedding layer를 통과합니다. 그런 다음 임베딩 벡터는 Transformer 인코더로 전달됩니다. 

 

2) Waveform input

Automatic speech recognition 모델은 오디오를 입력으로 받아 텍스트를 출력합니다. ASR을 위해 Transformer를 사용하려면, 먼저 오디오를 embedding vector의 시퀀스로 변환해야 합니다. Wav2Vec2나 HuBERT는 audio waveform을 모델의 인풋으로 바로 사용합니다. Waveform은 부동 소수점 숫자의 1차원 시퀀스로, 각 숫자는 주어진 시간에 샘플링된 진폭을 나타냅니다. 이 raw waveform은 zero mean과 unit variance로 정규화되어, 서로 다른 볼륨(진폭)에서 오디오 샘플을 표준화하는 데 도움이 됩니다. 

 

정규화 후, 오디오 샘플의 시퀀스는 Feature encode라고 알려진 CNN을 사용하여 임베딩으로 변환됩니다. CNN layer에서는 입력 시퀀스를 처리하고, 최종 CNN 계층이 오디오의 각 25ms에 대한 임베딩과 함께 512차원의 벡터를 출력할까지 오디오를 subsampling하여 시퀀스 길이를 감소시킵니다. 입력 시퀀스가 이러한 임베딩 시퀀스로 변환되면 Transformer는 임베딩 시퀀스를 입력으로 받아 계속해서 데이터를 처리합니다. 

 

3) Spectrogram input

Raw waveform을 입력으로 사용할 때 한 가지 단점은 시퀀스 길이가 길이가 긴 경향이 있다는 것입니다. 시퀀스 길이가 더 길수록 Transformer 모델에서 더 많은 계산을 필요로 하기 때문에 메모리 사용량이 증가합니다. Raw waveform을 Spectrogram형태로 변환하여 사용하면 동일한 양의 정보를 더 압축된 형태로 얻을 수 있습니다. 

 

 

Whisper 모델은 먼저 waveform을 log-meg spectrogram으로 변환합니다. Whisper는 항상 오디오를 30초 segment로 분할하고, 각 segment의 log-meg spectrogram은 (80, 3000), 80은 mel bin의 수이고, 3000은 시퀀스의 길이인 형태가 됩니다. log-mel spectrogram으로 변환함으로써 입력 데이터의 양은 줄였지만, 이것이 raw waveform보다 훨씬 짧은 시퀀스라는 것이 중요합니다. 그 다음 log-meg spectrogram은 CNN feature encoder에 의해 임베딩 시퀀스로 처리되고, Transformer 모델에 들어갑니다. 

 

 


 

 

4. 오디오 데이터의 모델 출력

Transformer 구조는 Output embedding, 즉 hidden-state vector의 sequence를 출력합니다. 이 벡터를 텍스트 또는 오디오 출력으로 변환합니다.

 

1) Text output

ASR 모델은 텍스트 토큰의 시퀀스를 예측하는 것이 목표입니다. 이는 language modeling head, 일반적으로 single linear layer를 추가한 후, softmax를 transformer의 output에 추가하여 만들어집니다. 이는 어휘의 텍스트 토큰에 대한 확률을 예측합니다.

 

2) Spectrogram output

TTS(Text-to-speech)모델과 같이 오디오를 생성하는 모델의 경우, 오디오 시퀀스를 생성하는 layer를 추가합니다. Spectrogram을 생성한 후 Vocoder를 사용하여 이것을 waveform으로 변환합니다. 예를 들어 SpeechT5 TTS모델에서 Transformer의 출력은 768-element vector의 시퀀스입니다. linear layer가 해당 시퀀스를 log-mel spectrogram으로 투사하고, 추가 linear layer와 CNN layer로 구성된 Post-net이 spectrogram의 노이즈를 감소시켜 정제합니다. 마지막으로 vocoder가 최종 waveform을 만듭니다.

 

 

3) Waveform output

모델이 스펙트로그램 대신 waveform을 직접 출력하는 것도 가능하지만, 현재 transformer에서는 이를 수행하는 모델이 없습니다.

 

 

 

 


 

 

참고:

https://huggingface.co/learn/audio-course/chapter3/introduction

반응형