iPhoneで話者認証のようなことをしたい(コースプロジェクトとして)。そして、スピーカーからリニアPCMを取得する方法を考えています。キューサービスの資料を読んだところ、音を録音してファイルに保存しているようです。これから直接リニアPCMを取得する方法はありますか?ドキュメントにはバッファについての何かが記載されていましたが、私はそれを完全には理解していません。多分それはこれを行うための鍵ですか?
質問する
2671 次
2 に答える
1
Audio Queue Services はこれを行うためのものです。コールバック関数に必要なコードを入力するだけです。 http://developer.apple.com/library/ios/#documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005343
于 2012-05-04T04:49:36.930 に答える
0
AVAudioRecorder *audioRecorder = [[AVAudioRecorder alloc]
initWithURL:soundFileURL
settings:recordSettings
error:&error];
audioRecorder.delegate = self;
audioRecorder.meteringEnabled = YES;
次に、記録ボタンをクリックしたときにタイマーを呼び出すなど、NSTimer を使用して記録を開始します。
-(IBAction)record:(id)sender{
NSTimer *recordTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self
selector:@selector(recordTimerAction:) userInfo:nil repeats:YES];
}
-(void)recordTimerAction:(id)sender {
[audioRecorder updateMeters];
const double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (0.05 * [audioRecorder peakPowerForChannel:0]));
lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;
NSLog(@"The Amplitude of the recording Sound is %f",lowPassResults);
NSLog(@"The Normal Linear PCM Value is %f",[audioRecorder peakPowerForChannel:0]);
}
// デリゲート メソッド
-(void)audioRecorderDidFinishRecording: (AVAudioRecorder *)recorder successfully:(BOOL)flag{
[recordTimer invalidate];
}
于 2012-04-26T11:27:17.500 に答える