我有如下所示的設置。如何在錄製音頻時將音頻錄製設置更改爲16Khz和16位?
我想錄制音頻時將音頻錄製設置更改爲16Khz和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引擎(自動語音識別)。我不回覆相同的迴應(我得到的響應音頻說「引號」)我發送。客戶說你不是以16KHz和16位採樣率記錄聲音,這就是爲什麼你得到這種響應。但是我問他發送給他的服務器的字節數是多少,他給了那個完美播放的.wav文件。但是如果他發送給ASR引擎的是同一個引擎,那麼ASR引擎不會接受我正在發送的錄製語音(他說ASR不會接受,因爲您沒有以16KHz和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
編輯的問題第2次使用下面回答:
後來通過給建議,我改變了我的設置代碼:
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];
我不知道我遵循這個,因爲你編輯它。下面的兩個答案都會給你一個以16kHz記錄的音頻文件。客戶在哪裏以及如何進入這個以及爲什麼他們需要16kHz? – Robert 2013-03-13 12:10:27
是的,正如你所說的兩個答案都是正確的。我的後端客戶端說,我想在16Khz,因爲他發送該字節(我們正在發送)到ASR(自動語音識別)引擎。我的客戶說,ASR引擎只接受16KHz錄製的語音。這就是爲什麼當我錄製音頻時我改變了我的設置@Robert – Babul 2013-03-27 10:48:19
我不知道錯誤在哪裏......它在我們的最後? @Robert – Babul 2013-03-27 10:53:29