https://github.com/openai/whisper
openai 에서 만든 STT 모델. 챗지피티의 음성인식 기능도 이거 기반으로 구현되었다고 함
주 관심사인 한국어 성능은 large model의 경우 word error rate가 5퍼 정도밖에 안된다
물론 cpu에서, 가볍고 빠른 속도를 얻고 싶기에 fast-whisper(https://github.com/SYSTRAN/faster-whisper) 를 사용할 것임
기존 speech recognition 모델의 한계
wav2vec
- unsupervised learning 으로, 6만시간의 대규모 음성 데이터로 학습
- fine tuning 은 적은 수의 labeled 데이터로 supervised learning 으로 진행
=> 실제로 STT 기능 하려면 fine tuning 해야함, 특정 도메인에만 우수한 성능을 보일 수 있고, fine tnue 데이터셋이 성능을 좌우할 가능성이 있음, 또 fine tune 자체가 어려움
=> general하고 robust 한 모델 필요?
그래서 whisper는?
CV (computer vision) 분야에서 대량의 weakly supervised 데이터로 모델을 학습시켰더니 결과가 좋더라
wav2vec 과 다르게 적은 수의 dataset 으로 supervised learning 했는데 성능이 괜찮더라
=> 680,000시간의 학습 데이터 활용한 weakly-supervised learning 수행
=> 참고로 한국어는 약 8000 시간
encoder-decoder Transformer 사용함 (기존 transformer 구조를 크게 바꾸지 않음, 대신 interface 바꾸고, 데이터셋 늘리고)
모든 오디오는 is re-sampled to 16,000 Hz, and an 80-channel log-magnitude Mel spectrogram representation 로 계산
multitask를 달성하기 위해?
하나의 모델이 entire speech processing pipeline 담당한다
voice activity detection + speaker diarization + inverse text normalization + core recognition part
통일된 포맷으로 task specification 달성
=> a simple format to specify all tasks and conditioning information as a sequence of input tokens to the decoder
어떤 포맷?
참고로 Whisper models은 30-second audio chunks로 학습됨, cannot consume longer audio inputs at once
학습시킬 때 history of text of the transcript 도 일부 포함시켜 스스로 longer-range text context를 활용해 ambiguous audio를 해결하는 걸 배우도록 함
- with some probability we add the transcript text preceding the current audio segment to the decoder’s context
- indicate the beginning of prediction with a <|startoftranscript|> token
토큰 포맷 구조는 아래와 같다
- predict the language being spoken (with unique token for 99 languages) ⇒ VoxLingua107 model
- model is trained to predict a <|nospeech|> token indicating if there’s no speech
- specify whether to predict timestamps or not by including a <|notimestamps|> token
- predict time relative to the current audio segment (nearest 20ms)
- add additional tokens to our vocabulary for each of these
- add a <|endoftranscript|> token
모델 학습은?
- fp16, dynamic loss scaling, AdamW, gradient norm clipping, 256 segments batch
- 참고로 few epochs만 돌려서 overfitting 가능성이 없다고 함
- 신기하게도 any data augmentation or regularization을 사용하지 않았으며 오로지 diversity contained within such a large dataset로 generalization and robustness 를 달성하고자 함
evaluation?
WER (word error rate) 를 그대로 사용하기엔 문제가 있었음
- string edit distance 기반, innocuous differences in transcript style 같은 것도 전부 penalize 했기 때문이다
- zero-shot model인 whisper는 특히 특정 dataset transcript formats를 본 적이 없었으므로 더욱 이 문제가 심각했음
따라서 extension standarization of text를 WER calculation 전에 적용시킨 후 매트릭 측정
⇒ 논문 appendix C에 있더라고요
Multi-lingual Speech Recognition
Language Identification
Robustness to Additive Noise
Long-form Transcription
Comparison with Human Performance
다양한 evaluation metrics + method 나와있으니 나중에 필요하면 읽어보면 좋을듯
한계는?
model size가 작아지면 steadiness reliability 떨어짐
- perception-related errors such as confusing similar-sounding words
- combination of failure modes of seq2seq models, language models, and text-audio alignment
- getting stuck in repeat loops, not transcribing the first or last few words of an audio segment
- hallucination where the model will output a transcript entirely unrelated to the actual audio
pre-training dataset is currently very English-heavy
- most languages have less than 1000 hours of training data
lack of unsupervised pre-training or self-teaching methods
- 이거 추가해서 fine tune 해보라고 추천하던데요
의의
- without the need for the self-supervision and self-training techniques that have been a mainstay of recent large-scale speech recognition work
- demonstrate how simply training on a large and diverse supervised dataset and focusing on zero-shot transfer can significantly improve the robustness of a speech recognition system
실제로 써봤는데 마이크 음질이 안좋을 때 hallucination이 심함.
인식 잘 안되면 안된다 해야하는데 어떻게든 output을 generate하려다보니 생긴 문제인듯
inference 속도도 빨라서 hallucination만 개선하면 괜찮을듯, 사소한 오인식은 llm 거치면서 correction 될 수 있기에
'speech' 카테고리의 다른 글
OpenVoice - TTS model (0) | 2024.08.14 |
---|