참조 오디오 품질의 중요성
음성 복제 기술은 짧은 참조 오디오로 개인의 음성 특징을 재현합니다. 그러나 복제 결과가 원본과 차이가 나는 경우, 그 원인은 모델 자체보다 참조 오디오의 품질에 있을 수 있습니다. 본 실험에서는 신호 대 잡음비(SNR)가 Fish Speech 1.5의 복제 정확도에 미치는 영향을 검증합니다.
SNR의 기술적 이해
SNR(Signal-to-Noise Ratio)은 유용한 음성 신호와 배경 잡음의 비율을 데시벨(dB)로 표시한 지표입니다:
- 고 SNR(30dB 이상): 음성 선명, 잡음 최소화
- 중 SNR(15-30dB): 음성 인식 가능하나 잡음 존재
- 저 SNR(15dB 이하): 잡음에 음성 파묻힘
높은 잡음 환경에서는 모델이 화자 특징과 잡음을 구분하지 못해 복제 품질이 저하됩니다.
실험 구성 및 방법
테스트 환경:
- 기준 음성: "Fish Speech 음성 합성 시스템을 사용해 주셔서 감사합니다" (중국어)
- 백색 잡음 추가로 5단계 SNR 생성: 40dB, 30dB, 20dB, 10dB, 5dB
평가 방식:
- 주관적 평가(5점 척도): 원본 대비 유사도
- 객관적 평가: 음성 유사도 알고리즘으로 % 계산
실험 결과 분석
| SNR(dB) | 주관 점수 | 유사도(%) | 관찰 특성 |
|---|---|---|---|
| 40 | 4.8 | 92 | 풍부한 음성 디테일 |
| 30 | 4.5 | 88 | 미세한 디테일 손실 |
| 20 | 3.5 | 75 | 음색 편차 발생 |
| 10 | 2.0 | 50 | 명확한 음성 왜곡 |
| 5 | 1.2 | 25 | 원본 특징 식별 불가 |
결론:
- 품질 임계값: 20-30dB 구간에서 품질 급변
- 30dB 이상: 안정적인 고품질 복제
- 20dB 미만: 복제 품질 급감 및 잡음 증폭 현상
고품질 참조 오디오 획득 가이드
촬영 팁:
- 소음 흡수 환경(커튼, 카펫)에서 녹음
- 외장 마이크 사용, 입에서 15-20cm 거리 유지
- 5-10초 자연스러운 발화 포함
SNR 개선 코드 예시:
import soundfile as sf
import numpy as np
def enhance_audio(input_path, output_path):
# 오디오 로드
audio, rate = sf.read(input_path)
# 스펙트럼 게이트 잡음 감소
spectrum = np.fft.rfft(audio)
magnitude = np.abs(spectrum)
threshold = np.median(magnitude) * 0.6 # 잡음 제어 계수
# 임계값 적용
spectrum[magnitude < threshold] = 0
cleaned = np.fft.irfft(spectrum)
# 결과 저장
sf.write(output_path, cleaned, rate)
고급 최적화 기법
파라미터 설정:
optimal_config = {
"top_p": 0.72, # 생성 다양성 조절
"temperature": 0.68, # 예측 임계값
"repetition_control": 1.25, # 반복 억제
"context_window": 180 # 문맥 유지 길이
}
다중 참조 전략:
- 3-5개의 다양한 내용의 오디오 샘플 사용
- 각 샘플별 SNR 30dB 이상 보장
- 조합 테스트를 통한 최적 성능 도출