Views
No views yet
1import librosa
2from pyctcdecode import build_ctcdecoder
3from transformers import (
4 AutoConfig,
5 AutoFeatureExtractor,
6 AutoModelForCTC,
7 AutoTokenizer,
8 Wav2Vec2ProcessorWithLM,
9)
10from transformers.pipelines import AutomaticSpeechRecognitionPipeline
11
12audio_path = ""
13
14# 모델과 토크나이저, 예측을 위한 각 모듈들을 불러옵니다.
15model = AutoModelForCTC.from_pretrained("42MARU/ko-spelling-wav2vec2-conformer-del-1s")
16feature_extractor = AutoFeatureExtractor.from_pretrained("42MARU/ko-spelling-wav2vec2-conformer-del-1s")
17tokenizer = AutoTokenizer.from_pretrained("42MARU/ko-spelling-wav2vec2-conformer-del-1s")
18processor = Wav2Vec2ProcessorWithLM("42MARU/ko-ctc-kenlm-spelling-only-wiki")
19
20# 실제 예측을 위한 파이프라인에 정의된 모듈들을 삽입.
21asr_pipeline = AutomaticSpeechRecognitionPipeline(
22 model=model,
23 tokenizer=processor.tokenizer,
24 feature_extractor=processor.feature_extractor,
25 decoder=processor.decoder,
26 device=-1,
27)
28
29# 음성파일을 불러오고 beamsearch 파라미터를 특정하여 예측을 수행합니다.
30raw_data, _ = librosa.load(audio_path, sr=16000)
31kwargs = {"decoder_kwargs": {"beam_width": 100}}
32pred = asr_pipeline(inputs=raw_data, **kwargs)["text"]
33# 모델이 자소 분리 유니코드 텍스트로 나오므로, 일반 String으로 변환해줄 필요가 있습니다.
34result = unicodedata.normalize("NFC", pred)
35print(result)
36# 안녕하세요 123 테스트입니다.