2

以下の設定があります。

オーディオを録音するときに、オーディオ録音設定を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エンジンは私が送信している録音された音声を受け入れません(16KHzおよび16ビットのサンプルレートでオーディオを録音していないため、ASRは受け入れないと彼は言います)。クライアントは次の応答を返しました。(だが、

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];
4

2 に答える 2

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];
于 2013-03-12T10:27:10.043 に答える
2

既存の設定は44.1kHzと16ビットなので、(上記がすでに機能していると仮定して)変更する必要があるのは次の行だけです。

[NSNumber numberWithFloat:44100.0] 

に:

[NSNumber numberWithFloat:16000.0]
于 2013-03-12T10:10:25.100 に答える