所以这里我们有一个 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。 .. 我看到了一些使用请求 发布多部分编码文件 的有趣示例,如您所见:
但是我做了几次尝试来实现我在这个问题中所描述的内容,但我很不幸......也许一点指导会对这个问题有所帮助:)
简而言之,我需要的是从麦克风录制一个 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/