5
私の音声記録から最小、最大、平均、標準偏差ピッチを見つけるにはどうすればよいですか? AudioRecordを使用して自分の声を録音します。Androidで音声ピッチを見つける
frequency = 8000;
channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration, audioEncoding, bufferSize);
I音声生データを処理し、私はこの機能を使用した後にフロート[]
を取得するためにFFTアルゴリズムを使用した後:
private float[] spectrumAnalyz(float[] spectr) {
float Re;
float Im;
float[] spectruData = spectr;
float[] mySpectrum = new float[(spectruData.length/2) - 1];
for (int i = 1, j = 0; i < spectruData.length/2; i++, j++) {
Re = spectruData[2 * i];
Im = spectruData[2 * i + 1];
mySpectrum[j] = (float) Math.sqrt(Re * Re + Im * Im);
}
return mySpectrum;
}
この関数の戻り周波数アレイ。グーグルで検索した後、私はMIN、MAXを見つけることができ、この式を使用して、この式 http://en.wikipedia.org/wiki/Pitch_(music)
pitch = 69+12*log2(F/440Hz), where F is frequency in Hz.
を発見し、意味とstd devのピッチ。
すべては間違いありませんか?
人間の音声情報でどのように周波数データを取得できますか?たぶん私はいくつかのlibやフレームワークを使用する必要がありますか? – illiaklimov