[Contextual ASR] CTC-Assisted LLM-Based Contextual ASR 논문 리뷰

SLT 2024에 소개된 Audio(ASR Task)와 LLM을 결합한 내용의 논문입니다.

기존의 ASR 태스크에서 Rare word에 대한 인식 성능을 향상시키기 위해 Language Model을 사용했는데요,

논문을 읽고 간단히 정리해보았습니다.

 

원문과 깃헙 코드는 아래 링크에서 확인할 수 있습니다.

 

https://github.com/X-LANCE/SLAM-LLM

 

GitHub - X-LANCE/SLAM-LLM: Speech, Language, Audio, Music Processing with Large Language Model

Speech, Language, Audio, Music Processing with Large Language Model - X-LANCE/SLAM-LLM

github.com

https://arxiv.org/abs/2411.06437

 

CTC-Assisted LLM-Based Contextual ASR

Contextual ASR or hotword customization holds substantial practical value. Despite the impressive performance of current end-to-end (E2E) automatic speech recognition (ASR) systems, they often face challenges in accurately recognizing rare words. Typical E

arxiv.org


Abstract

  • Rare Word(Hot key와 같은) 에 대한 인식 성능을 향상시키는 것은 여전히 ASR 태스크에서 어려움
  • 전형적인 E2E Contextual ASR 모델들은 복잡한 아키텍쳐와 Decoding 매커니즘을 갖고 있음.
  • 따라서 LLM을 베이스로 한 CTC Contextual ASR을 제안
  • CTC Decoding 결과가 나온 것을 바탕으로 Potential Relevant Hotword 들을 필터링 하는 방법을 제안
  • Rare Long-Tail word에 대해 강함
  • LLM을 이용한 일종의 필터링 알고리즘

 

Introduction

기존의 ASR들은 Technical Terms, Name Entity 와 같이 드문 용어들에 대해서는 ASR 성능이 확연히 떨어졌습니다.

따라서 본 연구에서는 "Hotword customization"을 지원하는 것을 목표로 합니다.

 

기존에도 E2E 모델에 다양한 Contextual Information을 주입하는 연구들이 진행되어 왔었는데요,

  • Shallow-Fusion : 디코딩 과정에서 E2E 모델의 점수와 외부 언어 모델(LM)의 점수를 결합하는 방식 (빔 서치의 각 단계에서 별도로 학습된 언어 모델과 Long-Linear Interpolation)을 수행함.
  • CLAS(Contextual Listen, Attend and Spell) : Incorporate Contextual Information을 SR 이 진행되는 동안 Attention Mechanism의 ASR component로 주입함
    • 음성 인식 과정에서 컨택스트 정보를 동적으로 통합
    • 어탠션 매커니즘을 활용하여 컨텍스트 구문을 임베딩하고 이를 ASR 컴포넌트에 어텐션 매커니즘을 통해 통합 (효과적인 OOV 처리가 가능)

CLAS에서는 "bias-conditioning"을 제안하여 특정 접두사가 부분적으로 디코딩된 가설과 일치하는 경우에만 바이어스 구문을 활성화 하여 OOV 처리를 진행했던 부분이 있습니다.

 

본 연구에서는 위의 Contextual Information 주입과 같은 LLM Based ASR 모델에 영감을 받아 LLMRobust filtering Algorithm을 이용해 성능 향상을 기대하고자 합니다.

 

 

Method

(1) Model Architecture

Contextual LLM-basd ASR Model Architecture

 

전체적인 모델 파이프라인을 보면 위와 같습니다.

E2E 파이프라인 부분을 좀 더 자세히 살펴볼게요.

 

E2E ASR Model Pipeline

 

  1. Stage1에서 들어온 음성을 WavLM 을 통해 CTC Loss를 구하여 Fine-tuning을 진행합니다.
    • CTC loss는 입력 시퀀스와 출력 레이블 사이의 정확한 alignment가 없는 상황에서 입력과 출력의 복잡한 정렬 관계를 효과적으로 처리할 수 있는 손실함수 (시퀀스 분류 작업에서 주로 사용)
  2. Stage 2로 넘어가면서, (1)에서 Fine-tune 된 WavLM 모델을 사용합니다. (Base : 94,000h 로 학습된 모델, Fine-tune : 960h 로 학습된 모델)
  3. Vicuna 7B라는 LLM 모델을 LLM Encoding Project와 Decoder 로서 사용합니다.
    • LLM input space와 추출된 음성 특징을 정렬하기 위해 simple linear projector를 사용합니다.
    • 이를 통해 50Hz의 특징을 10Hz 1-D convolution layer로 다운샘플링 하며, 2048 차원의 hidden layer에 두 개의 linear layer로 사영합니다. (총 4096 차원)
  4. Task instruction이 포함된 Prompt가 LLM tokneizer를 통해 Encoding 되고, Speech Embedding과 Prompt Embedding이 concatenate됩니다. (github 모델 코드에서는 BLIP V2 모델을 사용한 것 같네요.)

 

Contextual Based ASR에서는 LLM이 자주 잘못 인식하는 희귀단어들을 정확히 인식할 수 있도록 Biasing list를 프롬프트에 포함 합니다. 본 연구의 실험에서는 $P_{keep}$ 의 확률에 따라 Random 추출을 진행하고, 각 추출마다 K-word level의 n-gram을 예측합니다. 

 

Test-biasing list 는 hotword 리스트로 이루어져 있으며 filter algorithm을 통해 필터링 됩니다.

 

 

 

(2) Filtering Algorithm

그럼 구체적으로 어떤식으로 hotword filtering을 진행하는지 알아봅시다.

 

본 연구에서는 2-gram index dictionary를 만들어 biasing list를 미리 정의합니다.

 

예를 들어, biasing list에 [Bob, Joe] 라는 항목들이 있다면

다음과 같이 2-gram index dictionary 를 만드는 것이죠.

{'bo' : 'bob', 'ob' : 'bob',
	'jo' : 'joe', 'oe' : 'joe'}

 

그 후, "common word"를 제거하는 절차를 거칩니다.

본 논문에서는 Librispeech dataset의 자주 등장하는 단어 상위 5000개를 필터링하였습니다.

 

그 후, 저 단어 사전을 기준으로 후보를 가져옵니다.

 

예시 문장으로

"I like reading books" 라는 문장이 있다면 'bo' 라는 단어가 포함되어 있으니 후보군으로 ['bob']이 들어가게 되는 것이죠.

 

이렇게 추론문장을 처리하여 각 희귀 단어들에 대해 편집 거리를 계산하여 후보 리스트에서 가장 유사한 단어를 식별하고 이를 프롬프트에 포함하는 형태로 필터링 단계를 거칩니다.

 

 

Experiments

 

Pre-train 모델 대비 Fine tuning 모델 성능이 소폭 상승하였으며,

Bias list를 생성하여 Prompt에 입력한 것이 성능이 더 좋은 것을 확인할 수 있습니다. 다만 Biasing list size를 너무 키우게 될 경우 오히려 성능이 감소하는 모습을 보이네요.

 

GT Hotwords 에 한정하여 실험한 결과 모둔 부분에서 가장 우수한 성능을 확인할 수 있습니다.

 

 

다른 Contextual ASR 모델과 비교한 결과 입니다.

 

 


 

일부 Hotword 에 한정한 ASR을 진행한다면 ASR의 성능을 향상시킬 수 있는 좋은 방안이 될 수도 있다고 생각합니다.

Hotword에 대한 추가적인 튜닝 없이 단어 사전을 만들어 필터링 하는 것만으로도 제한된 상황에서 (ex. 특정 명령어 기반 ASR) 꽤 성능을 끌어낼 수 있는 대안이 되지 않을까 합니다.

 

ASR 모델의 경우 기본 finetuning 데이터셋을 960h 정도로 잡고 튜닝을 진행하는데,

(특정 명령어에 대한) 데이터가 부족하다거나 

훈련 시간이 부족한 환경이라면 시도해 볼 만한 방법 같습니다.