STE*_*IND 6 java audio javasound tarsosdsp
我正在研究分析声音文件音高的程序.我遇到了一个名为"TarsosDSP"的非常好的API,它提供了各种音高分析.但是我在设置它时遇到了很多麻烦.有人能告诉我一些关于如何使用这个API(特别是PitchProcessor类)的快速指示吗?一些代码片段将非常受欢迎,因为我在声音分析方面真的很新.
谢谢
编辑:我在http://husk.eecs.berkeley.edu/courses/cs160-sp14/index.php/Sound_Programming找到了一些文档,其中有一些示例代码,显示如何设置PitchProcessor,...
int bufferReadResult = mRecorder.read(mBuffer, 0, mBufferSize);
// (note: this is NOT android.media.AudioFormat)
be.hogent.tarsos.dsp.AudioFormat mTarsosFormat = new be.hogent.tarsos.dsp.AudioFormat(SAMPLE_RATE, 16, 1, true, false);
AudioEvent audioEvent = new AudioEvent(mTarsosFormat, bufferReadResult);
audioEvent.setFloatBufferWithByteBuffer(mBuffer);
pitchProcessor.process(audioEvent);
Run Code Online (Sandbox Code Playgroud)
...我很迷茫,mBuffer和mBufferSize究竟是什么?我如何找到这些值?我在哪里输入我的音频文件?
小智 8
TarsosDSP框架中的基本音频流如下:来自音频文件或麦克风的输入音频流被读取并被切割成例如1024个样本的帧.每个框架通过管道进行修改或分析(例如,间距分析).
在TarsosDSP中,AudioDispatcher负责切断帧中的音频.它还将音频帧包装到AudioEvent对象中.这个AudioEvent对象是通过链发送的AudioProcessors.
所以在你引用的代码中,mBuffer是音频帧,mBufferSize是样本中缓冲区的大小.您可以自己选择缓冲区大小,但对于音高检测,2048个样本是合理的.
对于音高检测,您可以使用TarsosDSP库执行类似的操作:
PitchDetectionHandler handler = new PitchDetectionHandler() {
@Override
public void handlePitch(PitchDetectionResult pitchDetectionResult,
AudioEvent audioEvent) {
System.out.println(audioEvent.getTimeStamp() + " " pitchDetectionResult.getPitch());
}
};
AudioDispatcher adp = AudioDispatcherFactory.fromDefaultMicrophone(2048, 0);
adp.addAudioProcessor(new PitchProcessor(PitchEstimationAlgorithm.YIN, 44100, 2048, handler));
adp.run();
Run Code Online (Sandbox Code Playgroud)
在此代码中,首先创建一个处理程序,它只打印检测到的音高.所述AudioDispatcher附接至默认麦克风,并且具有2048的音频处理器的缓冲区大小检测音调被添加到AudioDispatcher.处理程序也在那里使用.
最后一行开始该过程.
| 归档时间: |
|
| 查看次数: |
4565 次 |
| 最近记录: |