음성 인식과 오디오 생성

Hugging Face로 배우는 멀티모달 모델

James Chapman

Curriculum Manager, DataCamp

음성

 

음성 파형의 핵심 요소는 무엇일까요?

  • 피치: 남성 평균 85–180Hz, 여성 165–255Hz
  • 강세: 언어, 억양, 감정에 따라 다름
  • 리듬: 문맥, 감정, 언어의 영향

 

소셜 미디어 게시물

Hugging Face로 배우는 멀티모달 모델

자동 음성 인식

오디오가 인코딩된 뒤 오디오 또는 텍스트로 디코딩됩니다.

  • 텍스트와 오디오는 모두 순차적입니다
  • 예시: 전사, 번역, 텍스트-투-스피치
Hugging Face로 배우는 멀티모달 모델

자동 음성 인식

  • Tiny 모델: 3,900만 파라미터, 모델 크기 150MB
  • 학습 데이터: 68만 시간(레이블 있음)
from transformers import WhisperProcessor, WhisperForConditionalGeneration
processor = WhisperProcessor.from_pretrained("openai/whisper-tiny")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny")
1 https://github.com/openai/whisper
Hugging Face로 배우는 멀티모달 모델

자동 음성 인식

from datasets import load_dataset, Audio
dataset = load_dataset("CSTR-Edinburgh/vctk")["train"]
dataset = dataset.cast_column("audio", Audio(sampling_rate=16_000))

sample = dataset[0]["audio"]
input_preprocessed = processor(sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt")
predicted_ids = model.generate(input_preprocessed.input_features)
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True) print(transcription)
['Please cool Stella.']
Hugging Face로 배우는 멀티모달 모델

오디오 생성

오디오 생성을 위한 세 구성 요소:

  • 전처리기: 리샘플링 및 특징 추출
  • 모델: 특징 변환
  • 보코더: 오디오 파형용 별도 생성 모델
from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan

processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc") model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc") vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
Hugging Face로 배우는 멀티모달 모델

음성 임베딩

음성 임베딩이 음성 생성 파이프라인에 들어가는 방식 다이어그램

Hugging Face로 배우는 멀티모달 모델

화자 임베딩 생성

  • 사전학습 인코더: 오디오 파형 배열 → 인코딩된 배열(보통 512차원)
from speechbrain.inference.speaker import EncoderClassifier
speaker_model = EncoderClassifier.from_hparams(source="speechbrain/spkrec-xvect-voxceleb")
speaker_embeddings = speaker_model.encode_batch(torch.tensor(dataset[0]["audio"]["array"]))

speaker_embeddings = torch.nn.functional.normalize(speaker_embeddings, dim=2).unsqueeze(0)
Hugging Face로 배우는 멀티모달 모델

오디오 생성

inputs = processor(audio=dataset[0]["audio"], 
                   sampling_rate=dataset[0]["audio"]["sampling_rate"], 
                   return_tensors="pt")


speech = model.generate_speech(inputs["input_values"], speaker_embedding, vocoder=vocoder)

전/후 스펙트로그램

Hugging Face로 배우는 멀티모달 모델

연습해 봅시다!

Hugging Face로 배우는 멀티모달 모델

Preparing Video For Download...