我应该如何在 Java 中为 Android 手机实现准确的音高检测?

2024-03-28

我想开发一个应用程序,需要通过 Android 手机的麦克风对乐器进行精确的音高检测。我读到的大多数建议都涉及使用快速傅里叶变换(FFT),但他们提到它在准确性和处理能力方面存在问题(考虑到它应该在智能手机上顺利运行)。一个答案建议误差幅度为 5Hz,这在低频音调范围内非常明显。如果误差本质上是对数而非静态,则每个音符的误差幅度应小于 10 音分(1 音分=半音的 100 根,八度的 1,200 根),即

这些问题是否正确?如果是这样,是否有更好的基音检测方法?是否有开源库可以做到这一点,或者我必须自己编写算法(同时旨在准确地检测每秒可能超过一个音符)?我有基本的 Java 知识。

此外,普通智能手机麦克风的频率范围灵敏度的预期限制是什么?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何在 Java 中为 Android 手机实现准确的音高检测? 的相关文章

  • 单击 libGDX 中的 Actor

    我的游戏中有一个覆盖层 其中包含屏幕图像和屏幕 上 的一组按钮 截屏 My Screen有一个Stage The Stage有一组Group对象 我将其视为图层 第一组具有背景 中间的组具有游戏元素 最前面的组具有屏幕覆盖 覆盖层由一个Im
  • Java中使用流的byte[]到byte[]的ArrayList

    我有一个 byte 的 ArrayList 我想知道是否可以使用 Java 8 中的流将其转换为 byte ArrayList 内的所有数组都具有相同的大小 ArrayList
  • Android facebook 4.0.0 分享对话框不分享内容

    几个小时以来 我一直在尝试通过 facebook 4 0 0 sdk 分享我的 android 应用程序中的内容 我完全按照Facebook 分享文档 https developers facebook com docs sharing a
  • 编写无 BOM 的 UTF-8

    这段代码 OutputStream out new FileOutputStream new File C file test txt out write A getBytes 和这个 OutputStream out new FileOu
  • 比较 Java 中的两个基元数组?

    我知道 Arrays deepEquals Object Object 但这不适用于原始类型 由于数组和自动装箱的限制 请参阅这个相关帖子 https stackoverflow com questions 517751 java gene
  • Java 泛型和数字

    为了看看我是否可以清理一些数学代码 主要是矩阵代码 我尝试使用一些 Java 泛型 我有以下方法 private
  • 如何在ubuntu服务器上安装android SDK

    我在 ubuntu 服务器中有一个 React Native 项目 我想构建一个用于生产的 Android 应用程序 为此 我首先必须生成 Gradle Wrapper 文件 因此我在中运行此命令android目录 gradle wrapp
  • 如何停止在控制台上打印异常堆栈跟踪?

    我编写了一个 Servlet 来处理 Web 应用程序中发生的异常 并将它们映射到 web xml 中
  • java中如何在另一个类中使用嵌套类?

    我有一些情况 我想在另一个类中使用另一个类的内部类 喜欢 public class ListData public static class MyData public String textSongName textArtistName
  • 无法拦截Android应用程序的流量

    最近 我正在尝试测试和拦截来自开发的应用程序的流量罗莫比尔 我设置了一个代理burp 当然 我已经在我的设备上安装了 burp 证书 因此我可以拦截设备上的其他应用程序 但我无法在 burp suite 上看到相关应用程序的流量 相反 该应
  • 以从左到右的模式启动 Activity

    我面临一个问题 我有三项活动 我需要向左滑动开始新活动 Activity1 Activity2 Activity3 means 当我单击按钮时 新活动不应像 Android 行为那样直接显示 我希望新活动来自右侧并显示在当前屏幕上 任何人都
  • NAudio 音调变换

    我正在使用 NAudio DLL 并且正在寻找音调变换声音的示例代码 有一个使用的例子NAudio https github com naudio NAudio用于开源中的音高变换Skype 变声器 https github com mar
  • 为什么枚举可以有包私有构造函数?

    既然枚举构造函数只能由其常量调用 为什么允许它是包私有的呢 构造函数实际上不是包私有的 它是隐式的private接口方法的隐式方式public即使您不添加关键字 JLS 的相关部分 8 8 3 http docs oracle com ja
  • Primefaces 中的过滤数据表仅有效一次

    我正在尝试使用 Primefaces 过滤数据表 就像这个例子 http www primefaces org showcase ui datatableFiltering jsf 在网络浏览器中 我输入要过滤的文本 它会工作一次 但是当我
  • 通过检测 1.6 目标应用程序是否是 2.1 设备来显示动态壁纸?

    我们正在使用目标 SDK 1 6 构建 Android 应用程序 因此它将在 1 6 及更高版本的设备上运行 我们希望支持动态壁纸 我们知道动态壁纸仅限 2 1 有没有一种方法可以构建一个以 1 6 SDK 作为目标的应用程序 但检测它运行
  • Android AudioRecord 与 MediaRecorder 录制音频

    我想在我的 Android 手机上录制人声 我注意到 Android 有两个类可以做到这一点 录音带 http developer android com reference android media AudioRecord html a
  • 如何在android中实现表面视图的双击

    请告诉我如何实现双击SurfaceView在 Android 中使用手势检测器 有人可以提供代码示例吗 你可以尝试以下 实际上我测试了这个并且效果很好 1 Extend GestureDetector SimpleOnGestureList
  • 添加 2 个 BigDecimal 值 [重复]

    这个问题在这里已经有答案了 class Point BigDecimal x BigDecimal y Point double px double py x new BigDecimal px y new BigDecimal py vo
  • public open fun navigateUp() 的参数太多

    我在 Kotlin 中创建了一个新的 Android 项目 我还使用向导创建了一个新的导航抽屉活动 一如既往 没有任何东西是开箱即用的 以下行显示编译错误 val navController findNavController R id n
  • Spring Data JPA 中使用 @Query 进行动态查询?

    我在 Spring Boot 应用程序中使用规范 可以通过不同的过滤器选项过滤结果 但是 我需要使用特殊的过滤器 Query在我的存储库方法中 据我所知 我无法在此查询中构建动态 WHERE 子句 还有 QueryDSL 和 Criteri

随机推荐