AVAudioRecorder を使用してデバイスのマイクからオーディオを録音し、録音を操作する iPhone のプロジェクトに取り組んでいます。
ファイルからサンプルを正しく読み込んでいることを確認するために、python の wave モジュールを使用して、同じサンプルが返されるかどうかを確認しています。
ただし、Python の wave モジュールは、AVAudioRecorder によって保存された wav ファイルを開こうとすると、「fmt チャンクおよび/またはデータ チャンクが見つかりません」を返します。
これらは、ファイルを記録するために使用している設定です。
[audioSettings setObject:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[audioSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[audioSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[audioSettings setObject:[NSNumber numberWithFloat:4096] forKey:AVSampleRateKey];
[audioSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[audioSettings setObject:[NSNumber numberWithBool:YES] forKey:AVLinearPCMIsNonInterleaved];
[audioSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
その後、実際に録音を行うために recordForDuration を呼び出すだけです。
録音は成功です。ファイルなどを再生でき、AudioFile サービスを使用してサンプルを読み込むことができますが、Python のウェーブ モジュールでファイルを開くことができないため、検証できません。
ファイルの最初の 128 バイトは次のようになります。
1215N:~/Downloads$ od -c --read-bytes 128 testFile.wav
0000000 R I F F x H 001 \0 W A V E f m t
0000020 020 \0 \0 \0 001 \0 001 \0 @ 037 \0 \0 200 > \0 \0
0000040 002 \0 020 \0 F L L R 314 017 \0 \0 \0 \0 \0 \0
0000060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0000200
正しい WAV ヘッダーが AVAudioRecorder によって書き出されることを確認するために何をする必要があるか考えていますか?