- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究一个分析声音文件音高的程序。我遇到了一个非常好的 API,称为“TarsosDSP”,它提供了各种音高分析。但是我在设置它时遇到了很多麻烦。有人可以告诉我一些关于如何使用这个 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);
...我很迷茫,mBuffer 和 mBufferSize 到底是什么?我如何找到这些值?我在哪里输入我的音频文件?
最佳答案
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();
在这段代码中,首先创建了一个处理程序,它只打印检测到的音高。 AudioDispatcher
附加到默认麦克风,缓冲区大小为 2048。检测音调的音频处理器添加到 AudioDispatcher
。处理程序也在那里使用。
最后一行开始这个过程。
关于java - 傻瓜式 TarsosDSP 音高分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231813/
我正在使用 AudioRecord类通过麦克风录制用户的声音。有没有办法改声音或pitch用户在录制过程中。如果没有这样的方法,我该如何调制输出音频文件并更改其pitch并将文件保存回来。我不需要在播
自从我更新到 iOS7 以来,我总是收到正在开发的应用程序的日志消息“无法在此设备上启用 MKMapView 音高”。该设备是 iPhone4。 有人能告诉我这条消息是什么意思以及我如何摆脱它吗? 最
如何使用 c# 改变波形文件中的频率(音调)和振幅,但在波形文件上不是音调 http://www.youtube.com/watch?v=Tumpkl-xJuA 最佳答案 这answer here提供
因为我是一个音乐迷(但只是一个初级编码员),所以我编写了这个脚本来随机选择一些音调(从 MySQL 表中)(以帮助非正式的串行风格作曲。)它给出 9-12 个不重复的音调音高名称分为 3-4 组,每组
正如标题所说,如果我有一个发出声音的音频节点并将其连接到两个单独的 GainNodes,后者又连接到 Audio Context 目标,则声音以双倍速度/双倍音高播放(好像发送了一半样本一个增益节点,
我找到了 this example使用 ActionScript 3 提高 MP3 的音高。我将如何降低音高而不是提高音高? 最佳答案 您多次将相同的样本写入输出缓冲区。 function downO
我是一名优秀的程序员,十分优秀!