问题标签 [pitch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1439 浏览

iphone - 高性能代码中的峰值检测

我正在寻找使用 HPS 方法在 iphone 中实现语音音高检测。但是检测到的音调不是很准确。Performous在音高检测方面做得不错。

我查看了代码,但没有完全理解计算背后的理论。他们使用 FFT 并找到峰值。但是他们使用 FFT 输出相位的部分让我感到困惑。我认为他们对语音频率使用了一些启发式方法。

那么,任何人都可以解释一下 Performous 中用于检测音高的算法吗?

0 投票
1 回答
3811 浏览

android - 改变android中声音文件的频率

我尝试更改单个声音文件的频率。我设法在 android 中使用 SoundPool 做到了这一点。但结果听起来真的很糟糕。所以我开始讨论傅里叶变换——但我不确定这是否是我正在寻找的。

我想加载一个文件并在每次播放该文件时更改该文件的频率。所以我可以用一种音调创作旋律。android/java有可能吗?


这就是我设法做到的方式。“坏”我的意思是它听起来格格不入。

如果我想播放文件中音符的下一个频率,我必须将它乘以 2^(1/12)。但由于它只是一个浮点数,我想它不够精确,无法获得下一个音符的“真实”频率。

是否有实现该目标的“简单”方法?

0 投票
1 回答
5664 浏览

audio - 公开音高偏移

谁能告诉我为什么当我在公开赛中提高音高时音量会变低?音调越高,音量越低......

alSourcef(源,AL_PITCH,1.2f);alSourcef(源,AL_GAIN,1.0f);

使用此设置,音量仍然非常低。有没有办法欺骗它使增益超过1?也许这与距离有关?

仅供参考,源是从 AVrecorder 录制的声音,所以我不能将源音量设置得更高。

0 投票
4 回答
7372 浏览

python - 在 Python 中播放期间更改音频的音高(和速度)

我正在开发一个播放音乐的 Python 程序。一个功能是一个滑块,用户可以向上或向下拖动来改变音乐播放时的音高。

例如,如果音高设置为 2,那么音乐听起来会高一个八度,播放速度会提高一倍,持续时间会减半。我真正改变的是播放速度,但我需要实时交互。

可以在此处找到在 flash 中实现的此功能的一个很好的示例。(加载需要一点时间,请耐心等待。)

我研究了许多 python 音频包,但我还没有找到一个可以改变当前正在播放的声音的音高的包。我有多个版本的 Python,所以对包支持的版本没有要求。我正在 Windows 7 上开发它。

有什么建议么?

0 投票
1 回答
600 浏览

android - 确定Android手机水平时的滚动角度(上/下)?

当 Android 手机侧放(水平方向)时,Roll 代表倾斜,可以这么说。当手机垂直于地面(直视屏幕)时,滚动显示 90。但是,当您开始向前或向后倾斜手机时,就好像您想向下或向上看一样,角度只会减小。

这意味着向上或向下看 45 度会产生相同的滚动或 45 度。

怎么可能知道你是向前滚动还是向后滚动?

我一直在寻找这个问题的答案,但找不到其他人遇到这个问题。从不同的应用程序来看,这似乎是可能的,所以我想我只是错过了一些与某事的关系,并希望有人能够将我推向正确的方向。谢谢!

0 投票
9 回答
13087 浏览

iphone - C/C++/Obj-C 实时算法从人声输入中确定音符(不是音高)

我想检测的不是音高,而是歌唱音符的音级

因此,是 C4 还是 C5 并不重要:它们必须都被检测为 C。

想象一下排列在钟面上的 12 个半音,指针指向音高等级。这就是我所追求的!理想情况下,我希望能够分辨出演唱的音符是准确的还是略微偏离的。

这不是先前提出的问题的重复,因为它引入了以下约束:

  1. 声源是单一的人声,希望背景干扰可以忽略不计(尽管我可能需要处理这个)

  2. 八度不重要,只有音阶

编辑——链接:使用 Apple FFT 和 Accelerate 框架进行
实时音高检测

0 投票
3 回答
3342 浏览

algorithm - FFT 算法:输入/输出什么?(re:实时音高检测)

我正在尝试从音频流中提取音高数据。据我所见,FFT 似乎是最好的算法。

与其直接钻研数学,有人可以帮我理解这个 FFT 算法的作用吗?

请不要说“FFT 从原始信号中提取频率数据”之类的明显内容。我需要更详细的信息。

我输入什么,输出什么?

一旦我清楚地理解了接口,这将有助于我理解实现。

我认为我需要传入一个音频缓冲区,我需要告诉它每次计算要使用多少字节(比如这个缓冲区中最近的 1024 个字节)。也许我需要指定我希望它检测到的音高范围。现在它要回传什么?一组频率区间?这些是什么?

(编辑:)我找到了一个可以使用的 C++ 算法(如果我只能理解的话)

Performous从麦克风中提取音高。代码也是开源的。下面是对算法功能的描述,来自编写它的人。

  • PCM 输入(带缓冲)
  • FFT(一次 1024 个样本,之后从缓冲区前面删除 200 个样本)
  • 重新分配方法(针对之前 200 个样本的 FFT)
  • 峰值过滤(这部分可以做得更好,甚至可以省略)
  • 将峰值组合成谐波组(我们称组合为音调)
  • 音调的时间过滤(更新之前检测到的音调集,而不是简单地使用新检测到的音调)
  • 选择最好的人声(频率限制,加权,也可以使用谐波阵列,但我不认为我们这样做)

但是有人可以帮我理解这是如何工作的吗?从 FFT 发送到重新分配方法的内容是什么?

0 投票
6 回答
1496 浏览

algorithm - 检测音高的共振算法

我一直在寻找不同的方法来检测传到麦克风中的音调。

看到我想找出它与特定音高的共振有多紧密,我想知道我是否可以做某种基于物理的共振算法。

如果你在钢琴上按住踏板,然后唱一个音调,(如果你离它现有的音高足够近)一个音符会产生共鸣。

我希望能够模拟这种行为。但是我将如何完成这项任务?谁能帮我推进这件事?

0 投票
2 回答
3241 浏览

signal-processing - 音乐遇上 DSP:频率、音高、音调和音符有什么区别

关于编写音乐相关软件,我正在通过一些 DSP 工作,并且对术语感到困惑。

我开始怀疑这些实体是否天生就令人困惑/手摇晃晃/定义松散......

频率很清楚:每秒周期数,Hz。

PitchToneNote对我来说不是很清楚。

除了这些术语之外,还有“ pitch-class ”。据说 C4 和 C5 属于同一音级。

此外,是否还有其他术语需要添加到此集合中以消除歧义?

0 投票
3 回答
15531 浏览

c - 如何在 C 中实现带通滤波器(目的:音高检测)?

我最近问了这个问题

我正在寻找一种算法来检测音高。其中一个答案建议我使用初始 FFT 来获得基本频率响应,找出哪些频率正在发声,然后在每个感兴趣的区域使用带通滤波器:

一个稍微高级的算法可以做这样的事情:

  1. 粗略检测音调频率(可以用 DFT 完成)。
  2. 带通信号过滤隔离音调频率。
  3. 计算滤波信号中两个峰值之间的样本数。

现在我可以做第一步了(我正在为 iOS 编码,Apple 有一个框架(加速框架)用于执行 FFT 等。

我已经从这里开始了:但我可以看到问题:一个 FFT 可以区分一个人可以唱的所有可能的音符需要大量的样本,而且我不想执行太多不必要的计算,因为我是针对移动设备。

所以我试图弄清楚上面的这个答案,但我不明白如何将带通滤波器的概念应用到代码中。

任何人都可以帮忙吗?