【问题标题】:Recording and play audio stream recorded from microphone录制和播放从麦克风录制的音频流
【发布时间】:2013-04-10 14:57:01
【问题描述】:

我想用 python (pyaudio) 录制声音/对话,然后使用录制的流并使用套接字在另一台计算机上播放它(没有文件,只有 python)

我该怎么做?我应该使用哪些模块?

【问题讨论】:

    标签: python audio playback microphone recording


    【解决方案1】:

    只需通过套接字发送原始帧,而不是写入文件。使用端口音频网页上的播放示例。只需将pyaudio示例中的这段代码替换为录制(http://people.csail.mit.edu/hubert/pyaudio/):

    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()
    

    通过套接字发送 ((b''.join(frames)), FORMAT, CHANNELS, RATE)。对这些信息进行编码的一种简单方法可能是作为 post 请求,其中参数是 FORMAT、CHANNELS 和 RATE,正文是音频字节串。

    import urrllib2
    url = '192.168.1.10'
    data = urllib.urlencode({'FORMAT' : format,
                             'CHANNELS'  : channels,
                             'RATE' : rate})
    response = urllib2.urlopen(url=url, data= b''.join(frames)).read()
    assert(response == "Successfully Played")
    

    在这个例子中只需要修改你的ip地址,然后在接收端设置一个简单的web服务器(比如用flask)来处理请求。

    然后用户可以在套接字上解码此信息并使用播放示例,方法是创建一个具有正确参数的新流(如播放示例)。

    如果您需要实时音频流,请使用格式通道和速率发起单个请求,然后只需打开一个原始 tcp 套接字即可发送原始帧。

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多