问题标签 [tarsosdsp]

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 回答
577 浏览

java - TarsosDSP for Android AudioRecord 对象未从 LibGDX 项目中初始化

我正在尝试(重新)创建一个我前段时间使用原始 TarsosDSP 项目的分支编写的声学调谐器,使其可用于 Android。这一次,我正在使用 JorenSix 更新的 TarsosDSP for Android 项目,据我所知,我的代码中没有任何结构上重要的内容与之前的代码相比没有更改,但是当我尝试运行应用程序时收到以下错误:

我在从构造函数调用的方法 initTuner() 中初始化调谐器:

还有我的android清单文件:

任何帮助,将不胜感激。

0 投票
1 回答
386 浏览

android - TarsosDSP 和 SurfaceView 多线程问题

我正在使用 TarsosDSP 实时计算音高频率。它使用实现 Runnable 的 AudioDispatcher 并通过 handlePitch 方法发布结果以在主线程中使用。

我正在使用 SurfaceView 在更新时绘制此值。SurfaceView 还需要另一个线程在画布上绘制。所以我有 2 个可运行的对象。我无法管理如何通过一个线程更新表面视图,同时从另一个线程(audiodispatcher)获取音高值。

我只想使用我在handlePitch() 方法中获得的美分值来更新我在surfaceview 上的绘图。但是我的应用程序冻结了。任何想法?

在 MainAcitivity.java (onCreate(...))

在 SurfaceView.java 中(下面的代码由构造函数触发)

更新:

MyThread.java

0 投票
1 回答
428 浏览

android - 将音频文件读入双样本数组

我正在编写一个必须执行音频处理的 Android 应用程序(更具体地说,MFCC)。我决定使用 TarsosDSP 库,但它没有提供一种将声音文件传递给它的方法,而不是麦克风输入。这意味着我们目前必须编写一个实现特定接口的类:基本上,它是一个doubles 缓冲区的包装器。

您知道double从 Android 支持的音乐文件格式中获取样本的方法吗?我们一直在网上搜寻解决方案,但我们还没有找到一个足够通用的解决方案。

谢谢您的帮助 !

0 投票
0 回答
483 浏览

android - Android 音频的带通滤波器给出了意想不到的结果

我正在尝试使用 TarsosDSP 库(以及最小化 Android 库,但此处不包含相关代码)从 android 立体声音频(使用 AudioRecord 录制)中过滤特定频率。

有 2 个问题我想提出建议。

  1. 当我仅对来自麦克风的浮动缓冲区数据应用带通滤波器时,输出仅包含 2 个不需要的频率,而不是带通中指定的频率。例如,当带通的中心频率为 12000Hz,带宽为 20Hz 时,输出包含以 5000Hz 和 16000Hz 为中心的频率。不存在其他频率。关于这里发生的事情有什么想法吗?
  2. 当我应用 TarsosDSP 库中的低通或高通滤波器时,输出数据根本不会被过滤。看起来过滤器根本不起作用。

下面是这两个问题的代码。

上述带通滤波器的输出如下所示。图像的下半部分是来自 Praat tool for windows 的频谱图。 它主要显示两个频率。 第一个以〜5000Hz为中心,第二个以16000Hz为中心

我希望只看到指定的带通频率,但它显示了 2 个完全不需要的频率。知道这里发生了什么吗?

PS - 我是信号处理的新手。

0 投票
0 回答
265 浏览

java - 如何在 TarsosDSP (Android) 中提取 MP3 文件的 BPM

我一直在开发一个可以提取音频标签和其他元数据的播放器。我正在使用 mp3agic 进行 ID3 标签管理,但我想实现一种分析 MP3 文件以找到所述 MP3 文件的 BPM(每分钟节拍数)的方法。我偶然发现了用于处理的 TarsosDSP 包。问题是,我真的不知道从包中使用方法或类来做这样的事情。如果有人可以帮助我为此编写一个方法,将不胜感激。

提前致谢!

0 投票
0 回答
432 浏览

android - TarsosDSP PitchDetection 问题

我正在使用audiodispatcher来自 TarsosDSPlibrary 的。

pitchdetection用于检测来自麦克风的声音。一旦检测到,它就会切换到下一个活动(这是一个数学测验)。完成下一个活动的测验后,它会返回此活动并重新开始该过程。

困扰我的是,我的 APP 在使用该pitchdetection功能时 90% 的时间都在工作。但是,有时它不起作用并抛出如下错误:

E/AudioRecord: start() 状态 -38

并且应用程序不再切换到下一个活动。

0 投票
0 回答
144 浏览

java - 无法使用 TarsosDSP 运行 Java 程序 PitchShift

我正在尝试在这里运行 Pitch Shifting 示例:

https://0110.be/posts/Pitch_Shifting_-_Implementation_in_Pure_Java_with_Resampling_and_Time_Stretching

但我无法让它工作。我试着跑

java -jar PitchShift-latest.jar

从命令行,但我收到此错误:

错误:无法找到或加载主类 be.tarsos.dsp.example.PitchShiftingExample

我也不能从 Eclipse 运行它。有什么建议么?

0 投票
1 回答
1117 浏览

java - How do you extract MFCC data from file using TarsosDSP?

I created an MFCC extraction portion of my code based on this example on Stack Overflow, which created two AudioProcessor instances. However, using the debugger on Android studio, I found that the code quickly enters the processingFinished function while it skipped the process function for both. The mfcc variable in the instance was left null during the processingFinished function of the second AudioProcessor function. Why does the data never process? Is this the right way to get the MFCC?

My source code: (I changed theAudioDispatcher to pipe from file)

Is there is a possibility that an error because of the pipe AudioDispatcher had to do with this?

Any help will be appreciated. Thank you so much!

EDIT: I tried calling the process function independently by adding this line to the end of the method:

However, this gave me a NullPointerException.

  • I also compared the mfcc instances using two different audio files but I found that they had the exact same data, so they had no results from processing. When I changed the dispatcher back to the microphone, the mfcc had a value and the program went through the process function! Why doesn't it work for the dispatcher accessing an audio file?
0 投票
1 回答
1212 浏览

java - SourceDataLine 格式支持的问题

我有一个用 Java 编写的应用程序,我需要在其中播放音频。我使用 OpenAL(带有 java-openal 库)来完成任务,但是我想使用 OpenAL 不直接支持的 WSOLA。我找到了一个不错的 java-native 库,叫做 TarsosDSP,它支持 WSOLA。

该库使用标准 Java API 进行音频输出。在 SourceDataLine 设置期间出现此问题:

我确保问题不是由缺少权限引起的(在 Linux 上以 root 身份运行 + 在 Windows 10 上尝试过),并且项目中没有使用其他 SourceDataLines。

在修改格式后,我发现当它从 PCM_UNSIGNED 更改为 PCM_SIGNED 时,格式被接受。这似乎是一个小问题,因为仅将字节范围形式从无符号移动到有符号应该很容易。但是很奇怪,它本身不支持。

那么,是否有一些我不必修改源数据的解决方案?

谢谢,扬

0 投票
1 回答
352 浏览

java - 如何合并 MFCC

我正在从一些音频文件中提取 MFCC 功能。我目前拥有的程序为每个文件提取了一系列 MFCC,并有一个缓冲区大小为 1024 的参数。我在一篇论文中看到了以下内容:

通过计算每个特征向量元素的均值和方差(合并)来组合在一秒钟的音频数据中提取的特征向量。

我当前的代码使用 TarsosDSP 来提取 MFCC,但我不确定如何将数据拆分为“一秒钟的音频数据”以合并 MFCC。

我的 MFCC 提取码

缓冲区大小到底是多少,它可以用来将音频分割成 1 秒的窗口吗?有没有一种方法可以将一系列 MFCC 划分为一定的时间?

任何帮助将不胜感激。