2012-05-14 17 views
1

私の実験は次のようなものです: まず、matlabを使用して44100のレートで指定されたwaveファイルを作成します。ダブルとして。 次に、スマートフォンのマイクを使って波を取得します。波形を復元するために、サンプリングレートは44100です。 しかし、audioRecordはデータをバイトとして格納しますが、必要なのはdoubleです。妥当なバイトから2倍の音に変換すると、私はまだサンプリングレート44100はaudioRecordが1秒または44100 * 4バイトで44100バイトを記録すべきであることを意味しています。 他の実験私はコミットしました: waveとstoreを.wavで検索するための録音ソフトウェアを使用 matlabのwavreadとjavaでそれぞれ.wavを読んでください。 1Sに 、我々は44100個の要素を取得し、以下のリスト: -0.00164794921875
1.52587890625E-4
2.74658203125E-4
-0.003326416015625
0.001373291015625
-4.2724609375E-4
0.00445556640625
9.1552734375E- 5
-9.1552734375E-4
7.62939453125E-4
-0.003997802734375
9.46044921875E-4
-0.00103759765625
0.002471923828125
0.001922607421875
-0.00250244140625
8.85009765625E-4
-0.0032958984375
8.23974609375E-4
8.23974609375E-4
audiorecordのは、と1秒で取得しますどのように多くの要素、誰を知っています44100のサンプリングレート?audioRecordが指定されたサンプリングレートでデータを取得する方法

答えて

3

AudioRecordのデフォルトは、各サンプル(ENCODING_PCM_16BIT)のチャンネルごとに16ビットを返します。

ここで、短い[](16ビット)またはバイト[](8ビット)バッファを指定できる2つの読み込みオーバーロードがあります。

int read(short[] audioData, int offsetInShorts, int sizeInShorts) 
int read(byte[] audioData, int offsetInBytes, int sizeInBytes) 

だから1秒モノバッファ(1つのチャネル)...など、長さ44100ステレオ(2チャンネル)のshort[]バッファが88200を有するであろう

を有していなければならない私はbyte[]バッファを使用しないようになりますなんらかの理由でAudioRecordフォーマットをENCODING_PCM_8BITに設定していない限り、すべてのデバイスでサポートされるとは限りません。今、あなたは、あなたは、MATLABで録音double値はshort値はあなたが記述する必要がありますので、[-32768 to 32767]からあることを行っている間、[-1 to 1]から正規化されdouble-precision normalized samplesをしていることを認識する必要がダブルスにそれらの短い値を変換したい場合は

短いものから2重に番号をキャストしようとするのではなく、変換関数です。

+0

本当にありがとう〜あなたは私にたくさんの助けをしてくれます〜 – jiayan

関連する問題