所以在這裏我們有一個Python腳本:使用Python將「.wav」文件POST到URL,打印響應如何?
""" 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()
而且這個腳本做的第一comentary行說什麼,如果你在終端上運行它,它會在輸出路徑中的「.WAV」文件你設置在執行的那一刻......我想要做的是獲取該文件並「操縱」它,而不是將其輸出到計算機,我想將其存儲在一個變量或類似的東西中,然後我會喜歡將它張貼到URL解析一些參數以及它...我看到一些有趣的例子發佈多部分編碼文件使用請求,你可以看到這裏:
但我做了什麼實現我descripting在這個問題上,我是不幸的......也許有一點指導,將有助於這一個:)
作爲簡單地說,我需要的是多次嘗試從麥克風錄製一個WAV文件,然後將其張貼到一個URL(解析數據就像Headers一樣),然後在打印語句或類似終端中獲得輸出...
謝謝!
在Python 3,你也可能希望[BytesIO(http://docs.python.org/py3k/library/io.html#io.BytesIO)來代替。 – millimoose 2012-01-28 02:41:34
好吧,這個建議我得到一個:啓動腳本時「AttributeError的‘海峽’對象有沒有屬性‘項目’」的錯誤,它實際上記錄的音頻,將其解析爲一個變量(如果你嘗試打印,它實際上是二進制數據),然後,當試圖POST數據時,我得到這個錯誤。爲什麼? *使用StringIO – Jmlevick 2012-01-28 03:20:56
聽起來就像你正在傳遞一個字符串,在那裏想要一個字典(它有一個'.items()'方法)。這是怎麼回事? – Dougal 2012-01-28 03:26:43