[파이썬] 음성 데이터의 음성 합성에서의 속도 및 음높이 조절

음성 합성은 음성 데이터를 통해 인간의 음성을 생성하는 기술입니다. 이 기술은 음성 인터페이스, 음성 메시지, 음성 안내 등 다양한 응용 분야에서 사용되고 있습니다. 하지만 때로는 기본 음성 데이터의 속도나 음높이를 조절하여 더 다양하고 흥미로운 결과를 얻고 싶을 수도 있습니다. 이번 블로그 포스트에서는 Python을 사용하여 음성 데이터의 속도와 음높이를 조절하는 방법을 알아보겠습니다.

속도 조절

음성 데이터의 속도를 조절하는 방법 중 가장 간단한 방법은 음성 데이터의 재생 속도를 변경하는 것입니다. 속도를 빠르게 조절하면 음성이 더 빨리 재생되어 고속으로 말하는 것처럼 들립니다. 그리고 속도를 늦추면 음성이 더 천천히 재생되어서 느린 속도로 말하는 것처럼 들립니다.

Python의 pydub 라이브러리를 사용하여 음성 데이터의 속도를 조절할 수 있습니다. 아래는 속도를 조절하는 예제 코드입니다.

from pydub import AudioSegment

# 음성 데이터 로드
audio = AudioSegment.from_file("input.wav")

# 속도 조절
speed = 1.5  # 빠르게 재생할 수록 값이 커짐
adjusted_audio = audio.speedup(playback_speed=speed)

# 조절된 음성 데이터 저장
adjusted_audio.export("output.wav", format="wav")

위의 코드에서 "input.wav"는 원본 음성 파일의 경로를 나타내며, "output.wav"는 조절된 음성 파일을 저장할 경로를 나타냅니다. speed 변수를 조절하여 음성의 재생 속도를 변경할 수 있습니다.

음높이 조절

음성 데이터의 음높이를 조절하는 방법은 조금 더 복잡합니다. 일반적으로 음높이 조절은 피치 이동 알고리즘을 사용하여 구현됩니다. 이 알고리즘은 음높이를 조절하기 위해 주파수를 변경하는 방식으로 작동합니다.

Python의 pydub 라이브러리를 사용하여 음높이를 조절할 수 있습니다. 아래는 음높이를 조절하는 예제 코드입니다.

from pydub import AudioSegment

# 음성 데이터 로드
audio = AudioSegment.from_file("input.wav")

# 음높이 조절
pitch_shift = 3  # 양수면 음높이가 높아지고, 음수면 음높이가 낮아짐
adjusted_audio = audio._spawn(audio.raw_data, overrides={
    "frame_rate": int(audio.frame_rate * (2.0 ** pitch_shift))
})

# 조절된 음성 데이터 저장
adjusted_audio.export("output.wav", format="wav")

위의 코드에서 "input.wav"는 원본 음성 파일의 경로를 나타내며, "output.wav"는 조절된 음성 파일을 저장할 경로를 나타냅니다. pitch_shift 변수를 조절하여 음높이를 변경할 수 있습니다. 양수 값은 음높이가 높아지고, 음수 값은 음높이가 낮아집니다.

음성 합성에서 속도와 음높이를 조절하는 것은 다양한 목적으로 활용될 수 있습니다. 예를 들면, 음악 재생 속도 조절, 음성 지능 에이전트의 음성 변조, 음성 메시지의 감정 표현 등이 있습니다. 위에서 소개한 예제 코드를 응용하여 여러분만의 창의적인 프로젝트를 구현해 보세요!