Я использовал следующий код на Raspberry Pi 3B + Python 3 IDLE, чтобы записать звуковой файл и затем воспроизвести его, но записанный аудиофайл заикается *.Я не верю, что есть проблема с кодом.Что вы, люди, думаете?Кто-нибудь из вас сталкивался с этой проблемой ранее на Raspberry Pi?
import pyaudio
import wave
import sys
form_1 = pyaudio.paInt16 #16-bit resolution
chans = 1 #1 channel
samp_rate = 44100 #44.1kHz sampling rate
chunk = 4096 #2^12 samples for buffer
record_secs = 5 #seconds to record
dev_index = 2 #device index found by p.get_device_info_by_index(ii)
wav_output_filename = 'test3.wav' #name of .wav file
audio = pyaudio.PyAudio() #create pyaudio instantiation
#create pyaudio stream
stream = audio.open(format = form_1, rate = samp_rate, channels = chans, \
input_device_index = dev_index, input = True, \
frames_per_buffer=chunk)
print("recording")
frames = []
#loop through stream and append audio chunks to frame array
for ii in range(0,int((samp_rate/chunk)*record_secs)):
data = stream.read(chunk)
frames.append(data)
print("finished recording")
#stop the stream, close it, and terminate the pyaudio instantiation
stream.stop_stream()
stream.close()
audio.terminate()
#save the audio frames as .wav file
wavefile = wave.open(wav_output_filename,'wb')
wavefile.setnchannels(chans)
wavefile.setsampwidth(audio.get_sample_size(form_1))
wavefile.setframerate(samp_rate)
wavefile.writeframes(b' '.join(frames))
wavefile.close()
#play audio
sound = wave.open('test2.wav')
p = pyaudio.PyAudio()
chunk = 4096
stream = p.open(format =
p.get_format_from_width(sound.getsampwidth()),
channels = sound.getnchannels(),
rate = sound.getframerate(),
output = True)
data = sound.readframes(chunk)
while data != ' ':
stream.write(data)
data = sound.readframes(chunk)`