다중 화자 2
하나의 오디오 파일에서 여러 화자를 구분하는 작업을 speaker diarization(화자 분리)라고 합니다. 하지만 지금까지 사용한 무료 함수인 recognize_google()은 서로 다른 화자를 구분해 필사할 수는 없었죠.
유료 speech-to-text 서비스를 쓰지 않고 이를 우회하는 한 가지 방법은 오디오 파일을 단일 화자 기준으로 준비하는 것입니다.
예를 들어 통화 데이터를 다룬다면, 발신자와 수신자를 각각 별도로 녹음해 파일을 나누면 됩니다. 그런 다음 각 파일을 개별적으로 필사할 수 있어요.
이번 연습에서는 여러 화자가 있는 오디오 파일에서 각 화자 부분을 개별적으로 필사해 보겠습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 음성 언어 처리
연습 안내
enumerate()함수에speakers를 넘겨 각 화자를 순회하세요.recognizer에서record()를 호출해AudioFile을AudioData로 변환하세요.recognize_google()을 사용해 각speaker_audio객체를 필사하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
recognizer = sr.Recognizer()
# Multiple speakers on different files
speakers = [sr.AudioFile("speaker_0.wav"),
sr.AudioFile("speaker_1.wav"),
sr.AudioFile("speaker_2.wav")]
# Transcribe each speaker individually
for i, speaker in enumerate(____):
with speaker as source:
speaker_audio = recognizer.____(source)
print(f"Text from speaker {i}:")
print(recognizer.____(____,
language="en-US"))