PyAudio Input Overflowed -9981 – 没有解决方案工作
•浏览 1
PyAudio Input Overflowed -9981 - No solution working
请不要将此问题报告为重复问题,因为没有任何可用的解决方案适合我,我对它们都进行了测试
所以,
我正在尝试在我的 RaspberryPi 模型 B 板上运行 PyAudio 示例录音程序,
这是我得到的错误,
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
已经有一些解决方案可以解决许多用户的问题,但就我而言,这不是真的。
这是我尝试过的,
首先,这是代码,
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
我也试过当前配置是否支持,
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
44,000 和 44,100 都支持,但我仍然一次又一次地遇到相同的错误。
这是我的 USB 声卡设备信息,
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
有人知道为什么我仍然收到错误吗?
将您的块参数更改为 8192 而不是 1024。为我工作。
参考:IOError:[Errno 输入溢出] -9981
您是否尝试将 exception_on_overflow 设置为 False?来自 Pyaudio 文档:
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
从流中读取样本。使用非阻塞模式时不要调用。
参数:
num_frames a€"要读取的帧数。
exception_on_overflow a€" 指定是否应在输入缓冲区溢出时抛出(或静默忽略)IOError 异常。默认为真。
引发 IOError:
如果流不是输入流或读取操作不成功。
返回类型:
字符串
详细说明@Sidd Rajput 的答案,因为我没有明确说明这一点,
如果您正在导入,在脚本/项目中设置它是不够的 - pyaudio.py 本身需要修改
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
^pyaudio.py v0.2.8 中的第 589/590 行:
我只是增加了块数,它似乎有效!
这是我的代码
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)
Traceback (most recent call last):
File"/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File"/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
read(num_frames, exception_on_overflow=True)
def read(self, num_frames, exception_on_overflow=False):
import pyaudio
import wave
CHUNK = 44100 #just a big number
FORMAT = pyaudio.paInt16
CHANNELS = 1 #i found that my mic has 1 channel
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME ="output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input_device_index=3, #found that also
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
# importing modules for sound handling
# importing modules for sound handling
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
def audioeffect():
CHUNK = 16 # played with, this can be 2048 1024, 512, 256 etc
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
output=True,
frames_per_buffer=CHUNK)
r = array('h') # define r
snd_data = array('h', stream.read(CHUNK)) # read sounddata from input
r.extend(snd_data)
stream.stop_stream()
stream.close()
p.terminate()
N = 1
SumOfSquars = 0
for i in snd_data: # determing the value for tel of
N = N +1
# adding all quadrates
for i in range(0, N-1):
SumOfSquars = snd_data[i]**2
Rms_Value = np.sqrt(SumOfSquars / N)
#print("Rms_Value is :", Rms_Value)
return int(Rms_Value)