1. Background
지금까지 음성 인식에 대해 충분히 연구되지 않았지만,
컴퓨터 비전의 최근 연구들은 ImageNet과 같은 크라우드소싱 데이터셋을 넘어 훨씬 더 크지만
weakly-supervised 데이터셋으로 이동하면 모델의 견고성과 일반화가 크게 향상됨을 보여주었음
- 본 논문에서는 Weakly-supervised 음성 인식을 680,000 시간의 레이블이 지정된 오디오 데이터로 확장하여
그 격차를 줄임 - 본 논문의 접근 방식을 Whisper 라고 부름
- 680,000시간의 오디오 중 117,000 시간은 96개의 다른 언어를 포함함
- 이 데이터셋에는 125,000 시간의 X -> en 번역 데이터도 포함되어 있음
저자들은 충분히 큰 모델의 경우, 다국어 및 멀티태스킹 학습에 단점이 없으며 심지어 이점도 있음을 발견하였음
본 논문은 weakly-supervised 사전 학습의 간단한 확장이 음성 인식에 대해 지금까지 과소 평가되었음을 시사함
최근 대규모 음성인식 작업의 주축이 되어온 self-supervised나 self-training 기술 없이도 이러한 결과를 얻을 수 있음
2. Approach
1) Data Processing
- 최근 연구들의 추세에 따라 데이터 전처리에 대한 최소한의 접근 방식을 취함
- 본 논문은 발화와 전사(transcription) 사이를 매핑하는 방법을 배우기 위해 sequence-to-sequence 모델의 표현력에 의존하여 중요한 표준화 없이 녹취록의 텍스트를 예측하도록 Whisper 모델을 학습시킴
- 저자들은 인터넷의 전사와 쌍을 이루는 오디오에서 데이터셋을 구성하였음
- 오디오 품질의 다양성은 모델을 견고하게 학습시키는데 도움이 될 수 있지만 전사 품질의 다양성은 유익하지 않음
- 저자들은 전사 품질을 개선하기 위해 몇 가지 자동화된 필터링 방법을 개발함
- 인터넷에 있는 많은 전사들은 실제로 인간이 생성한 것이 아니라 기존 ASR 시스템의 결과물임
- 최근 연구에 따르면, 사람과 기계가 혼잡한 데이터셋에 대한 학습은 번역 시스템의 성능을 크게 저하시킬 수 있음
- 저자들은 "transcript-ese" 학습을 피하기 위해 학습 데이터셋에서 기계가 생성한 전사를 감지하고 제거하는 많은 휴리스틱을 개발함
- 저자들은 또한 VoxLingua107에 있는 데이터셋의 프로토타입 버전에서 학습된 프로토타입 모델을 fine-tuning하여 생성된 audio language detector를 사용하여 음성언어가 전사의 언어와 일치하는지 확인하였음
- 둘이 일치하지 않으면 데이터셋의 음성 인식 학습 예제로 (오디오, 전사) 쌍을 포함하지 않
- 전사 텍스트의 중복 제거를 사용하여 학습 데이터셋에서 중복 및 자동 생성 콘텐츠의 양을 줄였음
- 오디오 파일을 30초 세그먼트 내에서 발생하는 전사와 쌍을 이루는 30초 세그먼트로 나눔
- 저자들은 추가적인 filtering pass를 위해 초기 모델을 학습시킨 후 학습 데이터 소스에 대한 오차율에 대한 정보를 집계함
2) Model
3)
3. Experiments
4. Analysis and Ablations
5. 적용
Whisper Feature Extractor는 16kHz의 오디오 데이터를 요구하며, 우리는 우리가 가진 오디오 데이터를 이에 맞추어야 한다.
Whisper Feature Extractor는 두 가지 동작을 수행한다. 먼저 오디오 샘플에 대하여 padding 및 trucating을 진행하여 모든 샘플들의 길이를 30초로 맞춘다. 30초보다 짧은 샘플은 0으로 채워 30초로 맞추고(음성 신호에서 0은 신호 없음 혹은 침묵을 의미한다), 30초보다 긴 샘플들은 30초로 잘라낸다. 이처럼 인풋 단계에서 각 배치의 모든 요소들이 최대 길이로 채워지거나 잘라지기 때문에, 우리는 Whisper 모델에 데이터를 전달할 때 Attention mask를 필요로 하지 않는다.
Whisper 모델은 이 부분에서 독특한데,
대부분의 오디오 모델은 sequence가 패딩된 위치와 self-attention 메커니즘이 어느 부분을 무시해야 하는지에 대한 상세 정보를 제공하는 attention mask를 필요로 한다.
그러나 Whisper는 이러한 attention mask 없이 발화 신호로부터 무시해야 할 인풋을 직접 추론하도록 학습되었다.
Whisper Feature Extractor의 두 번째 동작은 패딩된 오디오 배열을 log-Mel 스펙트럼으로 변환하는 것이다.
이 스펙트럼은 푸리에 변환과 같이 주파수 신호를 시각적으로 나타낸 것이다. Whisper 모델의 인풋으로 주어져야 하는 것이 바로 이 log-Mel 스펙트럼이다.
Transformer의 Whisper Feature Extractor는 패딩과 스펙트로그램 변환을 단 한 줄의 코드로 수행할 수 있다.
WhisperFeatureExtractor는 16kHz의 오디오 데이터를 입력으로 받으므로 이에 맞추어 오디오 데이터를 리샘플링해야 한다.
본 프로젝트에서는 AI-HUB의 '저음질 전화 음성인식 데이터'의 일부를 활용
- 이 데이터셋은 각 문장별로 음성 데이터(wav 파일)와 해당 음성 데이터의 전사 데이터(text 파일)이 같은 파일명으로 매치되어 있음
- labeled data의 경우 해당 통화 내용의 전체 텍스트가 정리된 json 파일이 1개씩 포함되어 있음
이 데이터에 대하여 수행해야 할 전처리를 단계별로 구분하면 다음과 같다.
1단계 : 'idx, 오디오 파일 경로, transcription' 순으로 하나의 인스턴스가 만들어지도록 drive 내 파일들을 취합하여 DataFrame으로 만든다.
2단계 : 오디오 파일 경로를 이용해 sampling rate를 확인하고, 필요할 경우 16kHz로 리샘플링한다.
3단계 : 상기의 DataFrame을 input(오디오 경로)과 label(transcription)로 분류하여 x, y 데이터로 분할한다.
'Fine-Tune Whisper For Multilingual ASR with 🤗 Transformers' 포스트
- https://huggingface.co/blog/fine-tune-whisper
상기 참고 포스트와 함께 OpenAI의 공식 문서나 HuggingFace의 관련 문서도 살펴보시기를 강력히 권장드립니다.
다만 DatasetDict를 만드는 과정이나 훈련이 끝난 모델을 업로드하는 과정 등 제가 나름대로의 방법을 찾아 정리한 부분도 있습니다.
자연어 처리 스터디 과정을 밟고 있는 응애 개발자 지망생입니다. 잘못된 부분이나 부족한 부분은 지도해주시면 감사히 배우고 보완할 수 있도록 하겠습니다.