Google App Engine получает аудио бинарный поток - PullRequest
2 голосов
/ 13 июля 2011

ОБНОВЛЕНИЕ ПОСЛЕ ОТВЕТА: код исправлен и работает, ищите правильный код ниже

Я пытаюсь опубликовать скрипт из perl (на моем сервере) в своем движке приложений Google, и я не уверен, как это сделать на стороне движка приложений Google.

Это мой 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;
}

Так вот, как я посылаю двоичный поток flac, но вопрос в том, как движок приложения Google получает его и что-то с ним делает. Это то, что я пытаюсь сделать в 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, которое я отправил в службу Google Speech to Text (также известную как x-webkit-speech). Любая идея, что я должен положить в полезную нагрузку для urlfetch, и как получить результат обратно? Спасибо!

1 Ответ

2 голосов
/ 13 июля 2011

Поскольку вы отправляете аудиофайл как тело запроса, а не как часть формы, вы можете получить к нему доступ с помощью self.request.body.

Я немного озадачен тем, почему вы отправляете аудиофайл в App Engine только для того, чтобы он мог отправить его в другую службу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...