PyAudio Input Overflowed -9981 – 没有解决方案工作

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)

相关推荐

  • Spring部署设置openshift

    Springdeploymentsettingsopenshift我有一个问题让我抓狂了三天。我根据OpenShift帐户上的教程部署了spring-eap6-quickstart代码。我已配置调试选项,并且已将Eclipse工作区与OpehShift服务器同步-服务器上的一切工作正常,但在Eclipse中出现无法消除的错误。我有这个错误:cvc-complex-type.2.4.a:Invali…
    2025-04-161
  • 检查Java中正则表达式中模式的第n次出现

    CheckfornthoccurrenceofpatterninregularexpressioninJava本问题已经有最佳答案,请猛点这里访问。我想使用Java正则表达式检查输入字符串中特定模式的第n次出现。你能建议怎么做吗?这应该可以工作:MatchResultfindNthOccurance(intn,Patternp,CharSequencesrc){Matcherm=p.matcher…
    2025-04-161
  • 如何让 JTable 停留在已编辑的单元格上

    HowtohaveJTablestayingontheeditedcell如果有人编辑JTable的单元格内容并按Enter,则内容会被修改并且表格选择会移动到下一行。是否可以禁止JTable在单元格编辑后转到下一行?原因是我的程序使用ListSelectionListener在单元格选择上同步了其他一些小部件,并且我不想在编辑当前单元格后选择下一行。Enter的默认绑定是名为selectNext…
    2025-04-161
  • Weblogic 12c 部署

    Weblogic12cdeploy我正在尝试将我的应用程序从Tomcat迁移到Weblogic12.2.1.3.0。我能够毫无错误地部署应用程序,但我遇到了与持久性提供程序相关的运行时错误。这是堆栈跟踪:javax.validation.ValidationException:CalltoTraversableResolver.isReachable()threwanexceptionatorg.…
    2025-04-161
  • Resteasy Content-Type 默认值

    ResteasyContent-Typedefaults我正在使用Resteasy编写一个可以返回JSON和XML的应用程序,但可以选择默认为XML。这是我的方法:@GET@Path("/content")@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})publicStringcontentListRequestXm…
    2025-04-161
  • 代码不会停止运行,在 Java 中

    thecodedoesn'tstoprunning,inJava我正在用Java解决项目Euler中的问题10,即"Thesumoftheprimesbelow10is2+3+5+7=17.Findthesumofalltheprimesbelowtwomillion."我的代码是packageprojecteuler_1;importjava.math.BigInteger;importjava…
    2025-04-161
  • Out of memory java heap space

    Outofmemoryjavaheapspace我正在尝试将大量文件从服务器发送到多个客户端。当我尝试发送大小为700mb的文件时,它显示了"OutOfMemoryjavaheapspace"错误。我正在使用Netbeans7.1.2版本。我还在属性中尝试了VMoption。但仍然发生同样的错误。我认为阅读整个文件存在一些问题。下面的代码最多可用于300mb。请给我一些建议。提前致谢publicc…
    2025-04-161
  • Log4j 记录到共享日志文件

    Log4jLoggingtoaSharedLogFile有没有办法将log4j日志记录事件写入也被其他应用程序写入的日志文件。其他应用程序可以是非Java应用程序。有什么缺点?锁定问题?格式化?Log4j有一个SocketAppender,它将向服务发送事件,您可以自己实现或使用与Log4j捆绑的简单实现。它还支持syslogd和Windows事件日志,这对于尝试将日志输出与来自非Java应用程序…
    2025-04-161