2013-03-11 2 views
2

У меня есть настройки, показанные ниже.Как изменить настройки записи звука на 16 кГц и 16 бит при записи звука?

Я хочу изменить настройки записи звука на 16 кГц и 16 бит при записи звука.

NSArray *dirPaths; 
NSString *docsDir; 

dirPaths = NSSearchPathForDirectoriesInDomains(
               NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
NSString *soundFilePath = [docsDir 
          stringByAppendingPathComponent:@"sound.wav"]; 

NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 

NSDictionary *recordSettings = [NSDictionary 
           dictionaryWithObjectsAndKeys: 
           [NSNumber numberWithInt:AVAudioQualityMin], 
           AVEncoderAudioQualityKey, 
           [NSNumber numberWithInt:16], 
           AVEncoderBitRateKey, 
           [NSNumber numberWithInt: 2], 
           AVNumberOfChannelsKey, 
           [NSNumber numberWithFloat:44100.0], 
           AVSampleRateKey, 
           nil]; 

NSError *error = nil; 

audioRecorder = [[AVAudioRecorder alloc] 
       initWithURL:soundFileURL 
       settings:recordSettings 
       error:&error]; 

if (error) 
{ 

} else 
{ 
    [audioRecorder prepareToRecord]; 
} 

Как установить эти настройки?

Редактировать вопрос:

Спасибо за предоставленные ответы, я пытался использовать эти пути, но он не работает для меня, потому что мой клиент посылает записанный голос (записанный голос, что я посылаю в байтах формат) для механизма ASR (автоматическое распознавание речи). я не получаю обратно тот же ответ (я получаю ответ аудио говорит «кавычки»), что я отправляю. Клиент говорит, что вы не записываете голос с частотой 16 кГц и частотой дискретизации 16 бит, поэтому вы получаете ответ. Но я спросил его о байтах, что я отправляю на его сервер, он дал этот .wav-файл, он отлично играет. Но если тот же самый он отправляет в двигатель ASR, механизм ASR не принимает записанный голос, который я отправляю (он говорит, что ASR не согласится, потому что вы не записываете звук с частотой 16 кГц и частотой 16 бит). Клиент дал следующий ответ. (Но, я перепробовал все способы, предложенные вами)

Filename: sv_SE_356985580762248932.wav 
Folder: E:\developApp\TestappName\Mortionsn_dev\2nd-iteration\test_wfiles 
File Type: 44100Hz, 16-bit, Stereo 
Uncompressed Size: 1.63 MB (1,713,696 bytes) 
File Format: Windows PCM 
Windows PCM 
Size on Disk: 1.63 MB (1,717,892 bytes) 
Last Written (local): 3/11/2013 00:21:00.000 
Length: 0:09.714 
428,424 samples 

Редактировать вопрос второго времени Используя ответы на приведенные ниже:

Позже, давая предложения я изменил настройки кода:

NSMutableDictionary *recordSettings = [NSMutableDictionary dictionary]; 


[recordSettings setValue: [NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey]; 

[recordSettings setValue: [NSNumber numberWithFloat:16000.0] forKey:AVSampleRateKey];//8000.0 

[recordSettings setValue: [NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; 

[recordSettings setValue: [NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 

[recordSettings setValue: [NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 

[recordSettings setValue: [NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

[recordSettings setValue: [NSNumber numberWithInt: AVAudioQualityMax] forKey:AVEncoderAudioQualityKey]; 
+0

Я не уверен, что я следую за это, так как вы редактировали. Оба ответа ниже должны дать вам аудиофайл, записанный на частоте 16 кГц. Где и как клиент входит в это и почему они хотят 16 кГц? – Robert

+0

Да, как вы сказали, оба ответа верны. Мой конечный клиент сказал, что я хочу в 16Khz, потому что он отправляет эти байты (что мы отправляем) в ASR (автоматическое распознавание речи). Мой клиент сказал, что механизм ASR принимает только записанный голос на частоте 16 кГц. Вот почему я изменил настройки при записи звука @Robert – Babul

+0

Я не знаю, где ошибка ... это в конце? @Robert – Babul

ответ

2

Ваши существующие настройки 44,1 и 16 бит так (при условии, выше уже работает) единственная линия вы должны изменить это:

[NSNumber numberWithFloat:44100.0] 

To:

[NSNumber numberWithFloat:16000.0] 
3

Попробуйте, Общие настройки звука являются

AVFormatIDKey, 
AVSampleRateKey, 
AVNumberOfChannelsKey. 

И для аудио рекордер

AVEncoderAudioQualityKey; 
AVEncoderBitRateKey; 
AVEncoderBitRatePerChannelKey; 
AVEncoderBitDepthHintKey; 

убедитесь, что вы включили общие и самописца параметров.

и изменить ваш AVSampleRateKey к 16000.0,

NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:     
           [NSNumber numberWithInt:kAudioFormatLinearPCM], 
           AVFormatIDKey 
           [NSNumber numberWithInt: 2], 
           AVNumberOfChannelsKey, 
           [NSNumber numberWithFloat:16000.0], 
           AVSampleRateKey, 
           [NSNumber numberWithInt:AVAudioQualityMin], 
           AVEncoderAudioQualityKey, 
           [NSNumber numberWithInt:16], 
           AVEncoderBitRateKey, 
           nil]; 
+0

Привет, Спасибо, что дали ответ ... может у, пожалуйста, см. мой отредактированный вопрос еще раз @Vedchi – Babul

+0

Привет, пожалуйста, вопрос еще раз ... я не знаю, где ошибка ... это в конце? @Vedhic – Babul

Смежные вопросы