python - 使用 Python 将 ".wav"文件发送到 URL,打印 Response How To?

标签 python file post python-requests

所以这里我们有一个 Python 脚本:

""" Record a few seconds of audio and save to a WAVE file. """

import pyaudio
import wave
import sys

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"
all = []
for i in range(0, RATE / chunk * RECORD_SECONDS):
    data = stream.read(chunk)
    all.append(data)
print "* done recording"

stream.close()
p.terminate()

# write data to WAVE file
data = ''.join(all)
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

这个脚本按照第一条注释行所说的进行操作,如果您在终端中运行它,它将在您在执行时设置的路径中输出一个“.wav”文件...我想做的是获取该文件并“操纵”它,而不是将它输出到计算机,我想将它存储在一个变量或类似的东西中,然后我想将它发布到一个解析一些参数的 URL。 .. 我看到了一些使用请求 发布多部分编码文件 的有趣示例,如您所见:

http://docs.python-requests.org/en/latest/user/quickstart/

但是我做了几次尝试来实现我在这个问题中所描述的内容,但我很不幸......也许一点指导会对这个问题有所帮助:)

简而言之,我需要的是从麦克风录制一个 WAV 文件,然后将其发布到一个 URL(使用它解析数据,例如标题),然后在终端中以打印语句或类似的方式获取输出。 ..

谢谢!!

最佳答案

wave.open 允许您传递文件名或类似文件的对象以保存到其中。如果你传入 StringIO对象而不是 WAVE_OUTPUT_FILENAME,您将获得一个字符串对象,您可能会使用该对象来构造 POST 请求。

请注意,这会将文件加载到内存中——如果它可能真的很长,您可能更愿意这样做into a temporary file然后用它来提出你的请求。当然,您已经将它加载到内存中,所以这可能不是问题。

关于python - 使用 Python 将 ".wav"文件发送到 URL,打印 Response How To?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9042296/

相关文章:

c# - 为什么复制到U盘时文件修改时间自动增加2秒?

Java 查找文件名和扩展名的开头

swift - 如何快速连接字符串中的 "+"运算符

python - 支持在 Python 中使用的操作系统语言环境

python - 如何将 TF Tensor 持有值转换为 Tensor 持有分类值

python - 如何在 python 代码中创建文件(如果可用,则默认为文本文件)

javascript - NodeJS 服务器从 MongoDB 返回空数据

javascript - 将单选按钮的值发布到电子邮件

python - 日期不匹配时如何在 Pandas 中加入时间序列?

Python从段落中提取信息