2011-07-12 72 views
2

更新後回答:現在的代碼是固定的,作品下方尋找正確的代碼谷歌應用程序引擎接收音頻二進制流

我試着從一個Perl腳本後(我的服務器上),我的谷歌應用程序引擎,和即時通訊不知道如何去做在谷歌應用程序引擎方面。

這是我的測試perl腳本:

my $audio = `cat audiotest.flac`; 
my $url = "http://app.appspot.com/MainPage" #this is not the real url 
my $ua = LWP::UserAgent->new; 
my $response = $ua->post($url, Content_Type => "audio/x-flac; rate=16000", Content => $audio); 
if ($response->is_success) 
{ 
print $response->content; 
} 

所以這就是我如何發送後手二進制流,但問題是,谷歌是如何應用程序引擎接受它,並用它做什麼。這是林試圖在Python做(但代碼是不正確的和/或沒有道理)

class MainPage(webapp.RequestHandler): 
def post(self): 
    destinationURL = "http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US" 
    result = urlfetch.fetch(url=destinationURL, payload= self.request.body, method=urlfetch.POST, headers={'Content-Type': 'audio/x-flac; rate=16000'}) 
    self.response.out.write(result.content) 

結果應該返回給我,FLAC格式音頻播放我提交給谷歌的講話的字符串表示文本服務(也稱爲x-webkit-speech)。任何想法,我應該把有效載荷爲urlfetch,以及如何獲得結果回?謝謝!

回答

2

由於您要將音頻文件作爲請求的主體發送,而不是表單的一部分,因此您可以使用self.request.body進行訪問。

我有點困惑,爲什麼你要發送一個音頻文件到App Engine,以便它可以將它發送到另一個服務,但是。

+0

我會盡快給你一個嘗試,並讓你知道它是否有效。這背後的原因是我想通過谷歌的應用引擎,所以我可以適當的收費,而不是被禁止從服務所有在一起(由於大量的音頻文件被髮送) – Stefan

+0

感謝您的答案,這就是我在找什麼,歡呼。 – Stefan