Programming/python(파이썬)

python 사운드 장치

구차니 2024. 5. 10. 16:01

chatGPT 님 가라사대

재생 예제, 녹음 + fft 분석

import numpy as np
import sounddevice as sd

# 파라미터 설정
duration = 3  # 재생할 시간(초)
sampling_freq = 44100  # 샘플링 주파수 (Hz)
frequency = 440  # sine 파의 주파수 (Hz)

# 시간 배열 생성
t = np.linspace(0, duration, int(sampling_freq * duration), endpoint=False)

# sine 파 생성
sine_wave = np.sin(2 * np.pi * frequency * t)

# 사운드 재생
sd.play(sine_wave, samplerate=sampling_freq)
sd.wait()  # 재생이 끝날 때까지 대기
import numpy as np
import matplotlib.pyplot as plt
import sounddevice as sd
from scipy.fft import fft

# 녹음 파라미터 설정
duration = 5  # 녹음 시간 (초)
sampling_freq = 44100  # 샘플링 주파수 (Hz)

# 녹음 시작
print("녹음을 시작합니다...")
recorded_audio = sd.rec(int(duration * sampling_freq), samplerate=sampling_freq, channels=1)
sd.wait()  # 녹음이 끝날 때까지 대기
print("녹음이 완료되었습니다.")

# FFT를 위한 주파수 영역 생성
freq_axis = np.fft.fftfreq(len(recorded_audio), d=1/sampling_freq)

# FFT 계산
audio_fft = fft(recorded_audio.flatten())

# FFT 결과 그래프 표시
plt.figure(figsize=(10, 4))
plt.plot(freq_axis[:len(freq_axis)//2], np.abs(audio_fft)[:len(freq_axis)//2])
plt.title("FFT 분석 결과")
plt.xlabel("주파수 (Hz)")
plt.ylabel("Magnitude")
plt.grid(True)
plt.show()

[링크 : https://pypi.org/project/sounddevice/]

 

Assuming you have a NumPy array named myarray holding audio data with a sampling frequency of fs (in the most cases this will be 44100 or 48000 frames per second), you can play it back with play():
sd.play(myarray, fs)

[링크 : https://python-sounddevice.readthedocs.io/en/0.4.6/usage.html#playback]

 

duration = 10.5  # seconds
myrecording = sd.rec(int(duration * fs), samplerate=fs, channels=2)

[링크 : https://python-sounddevice.readthedocs.io/en/0.4.6/usage.html#recording]

 

[링크 : https://python-sounddevice.readthedocs.io/en/0.4.6/]

 

+

반복 재생

import soundfile as sf
import sounddevice as sd

weight = 1.4

data, fs = sf.read('sound.wav')
sd.play(data * weight, fs,loop=True)
sd.stop()

[링크 : https://stackoverflow.com/questions/47606214/stop-the-loop-in-sounddevice-audio-output]