Objective-CでのGoogleの音声認識API

このGoogle APIを使用したいと思います(テスト用のみ):

https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US

私の質問は:どのように私はこのURLにPOST要求を送信する必要がありますか?私は使用しています:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *recDir = [paths objectAtIndex:0];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/recordTest.flac", recDir]];


NSData *myData = [NSData dataWithContentsOfFile:[NSString stringWithFormat:@"%@/recordTest.flac", recDir]];
//NSString *audio = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/recordTest.flac", recDir]];



NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
                                initWithURL:[NSURL 
                                             URLWithString:@"https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US"]];






[request setHTTPMethod:@"POST"];

//set headers

[request addValue:@"Content-Type" forHTTPHeaderField:@"audio/x-flac; rate=16000"];

[request addValue:@"audio/x-flac; rate=16000" forHTTPHeaderField:@"Content-Type"];

NSString *requestBody = [[NSString alloc] initWithFormat:@"Content=%@", myData];

[request setHTTPBody:[requestBody dataUsingEncoding:NSASCIIStringEncoding]];

[request setValue:[NSString stringWithFormat:@"%d",[myData length]] forHTTPHeaderField:@"Content-length"];



NSHTTPURLResponse* urlResponse = nil;  
NSError *error = [[NSError alloc] init];  
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];  
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSLog(@"The answer is: %@",result);

しかし、私は得るだけです

{
"status":5,
"id":"fe6ba68a593f9919f5fd33e819d493a0-1",
"hypotheses":[
 HERE SHOULD BE THE TEXT
 ]
}

何が間違っている/私は何をすべきですか?

6
+1、興味深いもの。
追加された 著者 user529758,
Btwでは、 addValue:forHTTPHeaderField:メソッドと setHTTPBody:メソッドを誤って使用しています。
追加された 著者 user529758,

3 答え

FYI ステータス:0 - 正しい、 ステータス:4 - オーディオファイルがありません。 ステータス:5 - 不適切なオーディオファイル。

  In place of ;

    NSString *requestBody = [[NSString alloc] initWithFormat:@"Content=%@", myData];
    [request setHTTPBody:[requestBody dataUsingEncoding:NSASCIIStringEncoding]];

ただ使用する。

    [request setHTTPBody:myData];

参照のための作業コードは次のとおりです。

- (無効)googleSTT {

  NSString *homeDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
  NSString *filePath = [NSString stringWithFormat:@"%@/%@", homeDirectory, @"test.flac"];

  NSData *myData = [NSData dataWithContentsOfFile:filePath];


  NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
                                initWithURL:[NSURL
                                             URLWithString:@"https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US"]];

  [request setHTTPMethod:@"POST"];

  //set headers

  [request addValue:@"Content-Type" forHTTPHeaderField:@"audio/x-flac; rate=16000"];

  [request addValue:@"audio/x-flac; rate=16000" forHTTPHeaderField:@"Content-Type"];

  [request setHTTPBody:myData];

  [request setValue:[NSString stringWithFormat:@"%d",[myData length]] forHTTPHeaderField:@"Content-length"];

  NSHTTPURLResponse* urlResponse = nil;
  NSError *error = [[NSError alloc] init];
  NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
  NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

  NSLog(@"The answer is: %@",result);

}

2
追加された
私はあなたのコードを試しましたが、空の結果の文字列を取得しました。私が行ったことはwavオーディオファイルを記録し、それをflacファイルに変換してコードを使用しましたが、成功しませんでした。
追加された 著者 Mak13,
ねえ、私はそれを解決:) :)ありがとう
追加された 著者 Mak13,

Instead of bothering with the rather messy Cocoa implementation, check out my extremely easy-to-use (one function) C library for Google Speech: http://github.com/H2CO3/libsprec

0
追加された
@VipinVijayはGitHubリポジトリへのリンクを訪問するだけです。 2つのサンプルプログラムがあります。
追加された 著者 user529758,
追加された 著者 user529758,
そのためのサンプルコードはありますか?
追加された 著者 Vipin Vijay,
あなたは私にそのことに関するリンクを提供してもらえますか?
追加された 著者 Vipin Vijay,

i was struggling with the same issue but later on i resolved it by referring to this link https://github.com/gillesdemey/google-speech-v2.and just replaced your NSMutableURLRequest *request with this NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:@"https://github.com/gillesdemey/google-speech-v2"]];

0
追加された