0

В моем приложении я добавил один файл .flac в папку моих ресурсов. Я хочу послать в этот .flac файл в службу распознавания речи Google, ... Ниже мой код:Как хранить .flac-файл в NSData?

NSURL* urlGoogle = [NSURL URLWithString:@"https://www.google.com/speech-api/v1/recognize"]; 

NSMutableURLRequest *urlGoogleRequest = [[NSMutableURLRequest alloc]initWithURL:urlGoogle]; 

[urlGoogleRequest setHTTPMethod:@"POST"]; 

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

NSURLResponse* response = nil; 

NSError* error = nil; 

    NSArray *docDirs = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *docDir = [docDirs objectAtIndex:0]; 
    NSString *path = [[docDir stringByAppendingPathComponent:@"surround88"] 
         stringByAppendingPathExtension:@"flac" ]; 

    NSURL* url = [NSURL fileURLWithPath:path]; 

//Here I'm getting flacData value is nil 

NSData *flacData = [NSData dataWithContentsOfURL:url]; //flacData = nil 

    [urlGoogleRequest setHTTPBody:flacData]; 
    NSData* googleResponse = [NSURLConnection sendSynchronousRequest:urlGoogleRequest 
                returningResponse:&response 
                   error:&error]; 
    id jsonObject=[NSJSONSerialization JSONObjectWithData:googleResponse options:kNilOptions error:nil]; 
    NSLog(@"Googles response is: %@",jsonObject); 

Поскольку я не посылает никаких данных на сервер, я получаю пустой ответ.

Я тестировал другую стороннюю apis как openears, dragon, ispeech и т. Д. И не удовлетворен.

Может кто-нибудь помочь мне, как продолжить дальше. Является ли это правильным способом реализации функций распознавания речи Google? Любая помощь будет оценена по достоинству.

ответ

3

Поскольку вы размещаете файл в своей папке ресурсов, вы не найдете его с NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);. Вот почему [NSData dataWithContentsOfURL:url] возвращается nil.

Ваш файл теперь находится в вашем Bundle, поэтому попробуйте загрузить содержимое файла с этим:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"surround88" withExtension:@"flac"]; 
NSData *flacData = [NSData dataWithContentsOfURL:url]; 

EDIT: на основе комментариев сильфонных

Убедитесь, что файл является член цели, которую вы строите. Другими словами:

Managing resources and targets in Xcode

  1. Выберите файл .flac
  2. Убедитесь, что флажки для целей тестирования, вы это с

Использование тестового проекта выше, Я смог успешно создать объект NSData из файла .flac.

+0

Thank Bell за ваше предложение. Я заменил свой код на 2 строки, но на этот раз я получаю значение NSURL * url как «ноль». Теперь мое сомнение ... Является объективным C, поддерживающим тип .flac? – SivaCherukuri

+1

Я отредактировал ответ, чтобы решить проблему, о которой вы упомянули. –

+1

Спасибо, Белл. Это работает. – SivaCherukuri