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]