我正在玩TarsosDSP附带的UtterAsterisk示例程序。该程序的目标是显示水平条,以指示用户应做的笔记。垂直条从左向右移动,以向用户指示何时执行哪些音符的正确时间。用户会根据用户是否在正确的时间内记下了正确的笔记而获得积分。
链接到应用程序的屏幕截图:https://0110.be/files/photos/392/UtterAsterisk.png
此程序包含3个部分:
我想知道为什么这段代码在吹口哨时效果最好?
作为背景信息,我试图为类似的程序制作一个快速的原型,但是用户将产生非啸叫,无声(无言语)的声音(如动物的声音),并且需要与之匹配正确性。
我尝试吹哨程序中指示的注释,它确实运行得很好(除了我吹哨的感觉真糟糕!)。
我尝试选择不同的检测算法,但是当我不发出声音时,声音产生的注释并不总是记录在第三部分。
我感觉吹口哨会产生一个音符,而发出嘎嘎声(像鸭子一样)实际上是一种谐音(希望我没错:几个音符混合在一起会产生声音)。
// add a processor, handle percussion event.
dispatcher.addAudioProcessor(new PitchProcessor(algo, sampleRate, bufferSize, this));
我相信PitchProcessor仅会处理一个峰值,因为它返回的pitchDetectionResult仅包含一个频率(第59行): https://github.com/JorenSix/TarsosDSP/blob/master/src/core/be/tarsos/dsp/pitch/PitchDetectionResult.java
不幸的是,我主要是在数字信号处理领域起步,可以借助一些帮助来了解在这种特定应用中口哨效果如何。如果我的直觉指向正确(吹口哨=单音),一个人怎么能做与该程序相同的基本操作(将用户发出的动物声音与比赛录音进行比较)?
谢谢您的输入!
答案 0 :(得分:0)
答案似乎就在这里。
用户将产生无须回声,无声音(无语音)的声音(如动物的声音),并且需要进行匹配以确保正确性。
这些“声音”似乎是多种音调的结果, 吹口哨(人吹口哨)很可能会产生单一音调。
为进行比较, 测试钢琴弹奏的单个音符(或键)和钢琴弹奏的和弦(多个音符)的声音之间的差异。
另一种选择是使用电话来产生拨号音(例如,按7)而不是吹口哨。 电话会产生DTMF(双音等等)声音。