1

こんにちは、ネットワーク経由で音声を送信すると思われるコードを見つけようとしています。送信する音声に問題がありますが、入力した音声ではなく、一連の大きなビープ音が鳴ります

ビープ音が終わると、 EOFError

私はこれを理解しようと過去48時間を費やしました。どんなアイデアでも大歓迎です

関連するコード

ピオーディオをインポート
輸入仕様
システムをインポート

チャンク = 320
フォーマット = pyaudio.paInt16
チャネル = 1
レート = 44100
RECORD_SECONDS = 5

### サーバー機能 ###
デフサーバー():
    ### ソケットの初期化
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((ホスト、ポート))
    s.listen(5)
    ### 受信ループを開始
    True の間:
...
        elif コマンド == CMD_AUDIO:
            d = speex.Decoder()
            d.initialize(speex.SPEEX_MODEID_WB)
            p = pyaudio.PyAudio()
            ストリーム = p.open(フォーマット = フォーマット、
                            チャネル = チャネル、
                            率 = 率、
                            入力 = 真、
                            出力 = 真、
                            frames_per_buffer = チャンク)

            #voice = cPickle.loads(decrypt_my_message(msg))
            音声 = cPickle.loads(msg)
            プリントボイス
            for i in range(len(voice)):
                decdata = d.decode(voice[i])#DECODE 私のデータ。(YaY)#DECODE my data. (わーい)
                stream.write(str(voice), chunk) # データをスピーカーに書き戻す
            stream.stop_stream()
            ストリーム.close()
            p.terminate()
            d.destroy()
        メッセージでない場合: 中断

    conn.close()


### マイクからデータを読み取る ###

デフ sendAudio():
    チャンクリスト = []
    init_my_audio = speex.Encoder()
    init_my_audio.initialize(speex.SPEEX_MODEID_WB)
    p = pyaudio.PyAudio()
    ストリーム = p.open(フォーマット = フォーマット、
                    チャネル = チャネル、
                    率 = 率、
                    入力 = 真、
                    出力 = 真、
                    frames_per_buffer = チャンク)

    i の範囲 (0, 44100 / チャンク * RECORD_SECONDS):
        試す:
            data = stream.read(チャンク)
        IOError を除く:
            合格
        encda​​ta = init_my_audio.encode(データ)
        chunklist.append(encda​​ta)
        client(chr(CMD_AUDIO), cPickle.dumps((チャンクリスト), 1))
    stream.stop_stream()
    ストリーム.close()
    p.terminate()
    init_my_audio.destroy()

4

0 に答える 0