[python] 파이썬을 이용한 오디오 파일의 재생 및 녹음

이번 포스트에서는 파이썬을 사용하여 오디오 파일을 재생하고 녹음하는 방법에 대해 알아보겠습니다. 파이썬은 pyaudio 라이브러리를 통해 오디오 재생 및 녹음 기능을 제공합니다.

1. 오디오 파일 재생하기

먼저, 오디오 파일을 재생하는 방법에 대해 알아보겠습니다. pyaudio 라이브러리를 사용하여 오디오 파일을 열고 재생할 수 있습니다. 다음은 간단한 예제 코드입니다.

import pyaudio
import wave

# 오디오 파일 경로
audio_path = 'audio.wav'

# 오디오 파일 열기
audio_file = wave.open(audio_path, 'rb')

# 오디오 재생을 위한 PyAudio 인스턴스 생성
audio_player = pyaudio.PyAudio()

# 스트림 열기
stream = audio_player.open(format=audio_player.get_format_from_width(audio_file.getsampwidth()),
                           channels=audio_file.getnchannels(),
                           rate=audio_file.getframerate(),
                           output=True)

# 오디오 파일 데이터 읽기
audio_data = audio_file.readframes(4096)

# 오디오 재생
while audio_data:
    stream.write(audio_data)
    audio_data = audio_file.readframes(4096)

# 스트림 닫기
stream.stop_stream()
stream.close()

# PyAudio 인스턴스 종료
audio_player.terminate()

위의 코드는 audio.wav 파일을 열고 재생하는 예제입니다. 오디오 파일을 읽고 스트림을 열어 데이터를 재생한 후, 스트림을 닫고 PyAudio 인스턴스를 종료합니다.

2. 오디오 녹음하기

이제, 파이썬을 사용하여 오디오를 녹음하는 방법에 대해 알아보겠습니다. pyaudio 라이브러리를 사용하여 오디오를 녹음할 수 있습니다. 다음은 간단한 예제 코드입니다.

import pyaudio
import wave

# 녹음할 오디오 파일 경로
output_path = 'recorded_audio.wav'

# 녹음 설정
chunk = 1024  # 버퍼 크기
sample_format = pyaudio.paInt16  # 비트 수
channels = 2  # 스테레오
sample_rate = 44100  # 샘플링 속도

# PyAudio 인스턴스 생성
audio_recorder = pyaudio.PyAudio()

# 녹음 스트림 열기
stream = audio_recorder.open(format=sample_format,
                             channels=channels,
                             rate=sample_rate,
                             frames_per_buffer=chunk,
                             input=True)

# 오디오 데이터 저장을 위한 wave 라이브러리 인스턴스 생성
wave_file = wave.open(output_path, 'wb')
wave_file.setnchannels(channels)
wave_file.setsampwidth(audio_recorder.get_sample_size(sample_format))
wave_file.setframerate(sample_rate)

# 오디오 녹음
print("녹음을 시작합니다.")
frames = []
while True:
    data = stream.read(chunk)
    frames.append(data)
    if len(data) == 0:
        break

# 녹음 데이터 저장
stream.stop_stream()
stream.close()
audio_recorder.terminate()

wave_file.writeframes(b''.join(frames))
wave_file.close()

print("녹음이 완료되었습니다.")

위의 코드는 지정된 설정으로 오디오를 녹음하여 recorded_audio.wav 파일에 저장하는 예제입니다. 녹음 스트림을 열고 데이터를 읽어서 지속적으로 저장한 후, 스트림을 닫고 PyAudio 인스턴스를 종료합니다.

마무리

이번 포스트에서는 파이썬을 사용하여 오디오 파일의 재생 및 녹음 방법에 대해 알아보았습니다. pyaudio 라이브러리를 사용하여 오디오 처리를 쉽게 할 수 있습니다. 다양한 오디오 프로젝트에 파이썬을 활용해 보세요!