【Raspi4:사운드 입문】python으로 소리 입력을 안정적으로 기록한다♪
11480 단어 파이썬RaspberryPi4소리
중요한 것은 아래 참고 1.와 같습니다. 덧붙여 작년은 참고 2.와 같은 일을 해 놀고 있었습니다.
올해는 이 후에 조금 다른 일을 하려고 합니다.
【참고】
1. PyAudio Input overflowed
2. 【Scipy】FFT, STFT와 wavelet 변환으로 놀아 본 ♬~⑦ 실시간 스펙트로그램; 고속화
중요한 것
즉,로드 할 때 다음과 같은 덤프를 기록하면 오버 플로우가 발생하지 않으므로 계속 기록 할 수 있습니다.
※이 기사는 Rasipi4에서도 이것이 해결되었다는 이야기입니다
# -*- coding:utf-8 -*-
import pyaudio
import matplotlib.pyplot as plt
import numpy as np
import wave
import struct
읽은 사운드를 다음 함수로 wav 파일로 저장합니다.
def savewav(sig,sk):
RATE = 44100 #サンプリング周波数
#サイン波を-32768から32767の整数値に変換(signed 16bit pcmへ)
swav = [(int(32767*x)) for x in sig] #32767
#バイナリ化
binwave = struct.pack("h" * len(swav), *swav)
#サイン波をwavファイルとして書き出し
w = wave.Wave_write("./wine/"+str(sk)+".wav")
params = (1, 2, RATE, len(binwave), 'NONE', 'not compressed')
w.setparams(params)
w.writeframes(binwave)
w.close()
소리의 입출력을 True로 하고 있습니다.
음성(문장)을 입력하므로 긴(102400/44100=2.3sec)에 녹음합니다.
RATE=44100
p=pyaudio.PyAudio()
N=100
CHUNK=1024*N
stream=p.open(format = pyaudio.paInt16,
channels = 1,
rate = RATE,
frames_per_buffer = CHUNK,
input = True,
output = True) # inputとoutputを同時にTrueにする
그리고 드디어 연속 녹음 시작입니다. exception_on_overflow를 False로 설정합니다. sig를 32768로 나누었습니다.
sk=0
while stream.is_active():
input = stream.read(CHUNK, exception_on_overflow = False)
print(len(input))
sig =[]
sig = np.frombuffer(input, dtype="int16") / 32768
savewav(sig,sk)
fig, (ax1,ax2) = plt.subplots(2,1,figsize=(1.6180 * 4, 4*2))
lns1=ax1.plot(sig[0:1024] ,".-",color="red")
ax1.set_xticks(np.linspace(0, 882, 3))
ax1.set_ylabel("sig0")
ax1.set_title('short plot')
lns2=ax2.plot(sig[0:CHUNK], "-",color="blue")
ax2.set_xticks(np.linspace(0, 44100*2, 5))
ax2.set_ylabel("sig1")
ax2.set_title('long plot')
ax1.grid()
ax2.grid()
plt.pause(0.5)
plt.savefig("./wine/sound_{}.png".format(sk))
plt.close()
sk+=1
output = stream.write(input)
오, 어, 네. . 의 연속 측정 결과
x-축 메모리; 44100=1sec
요약
・연속 측정이 가능하게 되었다
・음 관계로 R-python 연계를 하고 싶다
Reference
이 문제에 관하여(【Raspi4:사운드 입문】python으로 소리 입력을 안정적으로 기록한다♪), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MuAuan/items/c86d45159655dc2fda0e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)