3

コードに問題があり、メモリエラーが発生します。この機能が原因だと思います(下記参照)。

def sendAudio():
    p = pyaudio.PyAudio()
    ストリーム=p.open(format = FORMAT、
                    チャネル=チャネル、
                    レート=レート、
                    input = True、
                    出力=True、
                    frame_per_buffer =チャンク)

    data = stream.read(chunk)
    client(chr(CMD_AUDIO)、encrypt_my_audio_message(data))

def keypress(event):
    if event.keysym =='エスケープ':
        root.destroy()
    if event.keysym =='Control_L':
        #print( "データを送信しています...")
        sendAudio()
        #print( "データが送信されました!")

この機能は、マイクから読み取って、そのデータをネットワーク経由で送信します。ただし、キーが押されてデータが送信されると、キーが送信されます(これはホワイトノイズなどである可能性があります)。グリッチを減らす方法はありますか?つまり、キーを押すことで、これがこの状況への正しいアプローチであるかどうかはわかりません。

あなたの返事をありがとう私が得るエラーは

スレッドThread-1の例外:
トレースバック(最後の最後の呼び出し):
  __bootstrap_innerのファイル"C:\ Python27 \ lib \ threading.py"、行552
    self.run()
  ファイル"C:\ Python27 \ lib \ threading.py"、行505、実行中
    self .__ target(* self .__ args、** self .__ kwargs)
  サーバー内のファイル「chat.py」、62行目
    frame_per_buffer =チャンク)
  ファイル"C:\ Python27 \ lib \ site-packages \ pyaudio.py"、行714、開いている
    stream = Stream(self、* args、** kwargs)
  __init__のファイル"C:\ Python27 \ lib \ site-packages \ pyaudio.py"、行396
    self._stream = pa.open(** arguments)
IOError:[Errnoメモリ不足] -9992
4

2 に答える 2

3

あなたが得ている例外は何ですか?PortAudio からの入力オーバーフローである場合は、チャンク サイズを増やしてみてください。また、バッファーがホワイト ノイズでオーバーフローしている場合は、例外をキャッチして空のストリームを返すことで処理できます。

try:
    data = stream.read(chunk)
except IOError as ex:
    if ex[1] != pyaudio.paInputOverflowed:
        raise
    data = '\x00' * chunk  # or however you choose to handle it, e.g. return None
于 2011-07-03T06:58:07.627 に答える