问题标签 [java-audio]

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

android - 有没有办法在 Android 中以更快的速度播放 .ogg 文件?

我有想要以 1x 速度、2x 速度和 3x 速度播放的声音文件。应该进行音高校正。有很多解决方案可以离线更改文件并且简单地拥有三个文件。然而,这意味着我的应用程序需要更多的磁盘空间。

有没有一种直接的方法可以提高在线速度,这样我只需在我的应用程序中包含一个版本的文件?

我的应用程序是封闭源代码,所以我不能使用 GLP 库。

0 投票
0 回答
463 浏览

java - 在java中同时在软合成器上演奏多种乐器

javax.sound.midi.我一直在尝试使用该软件包在软合成器上演奏超过 1 种乐器。在合成器可用的 16 个通道中,我尝试以这种方式使用其中的两个。

这里的问题是这段代码只在通道 2 上播放乐器,而不是在通道 1 上播放乐器。可能是因为睡眠功能在第二条noteOn()消息之后。那么问题是如何同时运行两个noteOns?这是可能的,还是有完全不同的方法来演奏多种乐器?

非常感谢任何见解。谢谢。

0 投票
1 回答
1500 浏览

java - 在Android中准确同步AudioRecord和AudioTrack

我在尝试着

    1. 使用 AudioRecord 录制 PCM 数据并将它们保存到 .wav 文件中。(完毕)
    1. 稍后在播放之前录制的文件时录制另一个 PCM 文件
    1. 将新录音保存到另一个文件
    1. 混合(叠加)第一个和新的录音。

我的问题是第二个录制文件(2.)和第一个录制文件(1.)不同步。一旦我将它们混合在一起,我就会听到我没有记录的延迟。为了测试我的应用程序,我对着麦克风说“测试 1 2 3”。在第二个录音中,我同时说“Test 1 2 3”。但是,在混合(叠加)我的 2 个文件之后,我得到了延迟。

我做错什么了?

解释:

  • 在线程中运行
  • 使用相同的设置创建 AudioTrack 和 AudioRecord
  • boolean playSound:如果第一次录音已经完成并且 wav 可用,则为 true
  • 在循环:
    • 读取录音机音频数据并将其写入输出流
    • 读取之前录制的 wav 的一部分并将其写入播放器

(- 一旦没有什么可播放的,playbackRead 为-1)

之后我尝试混合我的录音。但是,我的第二次录制有延迟,我没​​有录制。

我究竟做错了什么?我如何(几乎)完全正确地同步 AudioRecord 和 AudioTrack,以便当我说某事时,它会在背景录音的位置播放,就像我录制它时一样?

0 投票
2 回答
1693 浏览

java - Java Audio SourceDataLine 不支持 PCM_FLOAT

我正在尝试在 Linux 上使用 Java 播放音频缓冲区。

尝试打开线路时出现以下异常(而不是在我向其写入音频时)...

我想知道我对 PCM_FLOAT 编码是什么的假设实际上是不正确的。

我有一些读入 wav 文件的代码。wavfile 是单声道、16 位、未压缩格式。然后我将音频转换为 -1.0 到 1.0 范围内的浮点数进行处理。

我假设 PCM_FLOAT 编码只是原始 PCM 数据,已转换为 -1.0 和 1.0 之间的浮点值。这个对吗?

然后我假设 SourceDataLine 会根据我传递的格式信息(单声道、16 位、2 字节/帧)将浮动音频转换为适当的格式。这个假设又是不正确的吗?

我必须将我的 float -1.0 到 1.0 音频转换回我想要的输出格式,并将 SourceDataLine 设置为 PCM_SIGNED(假设这是我想要的格式)吗?

编辑:

另外,当我使用 PCM_FLOAT 调用 AudioSystem.getTargetEncodings() 时,它会返回三个编码。这是否意味着它将接受 PCM_FLOAT,并能够根据底层音频系统支持的内容转换为返回的编码?

结果是...

PCM_SIGNED PCM_UNSIGNED PCM_FLOAT

0 投票
2 回答
9979 浏览

java - 为 google-cloud-speech 、 Java 桌面应用程序定义 GOOGLE_APPLICATION_CREDENTIALS

我是全新的使用google-cloud-java

尝试Speech Recognition使用google-cloud-speech做一些事情。

我已经写了下面的代码,但是有一个问题,我不知道如何指定凭据,所以我得到了下面的错误,不知道怎么做,现在在网上搜索了 2 个小时:

将音频从麦克风发送到 Google 服务器并返回文本


遵循给出的答案直到现在

我的 credentials.json 看起来像,我收到了错误:

错误 :


更新 3

修复了此链接后的错误-> https://github.com/Triple-T/gradle-play-publisher/issues/141

0 投票
0 回答
113 浏览

java - JavaFX 音频文件路径

https://imgur.com/a/6gNa89z它会导致我的问题

当程序中发生某些操作时,我只想播放一些音频文件。问题是我和我的团队在克隆 repo 后有不同的文件夹结构。对我来说,我需要用 SourceCode 给它一个路径,他们需要它而不需要这个术语。而且我宁愿将资源文件夹外包到 src 之外。

对我来说,代码需要是:

但是对于他们来说,这需要像 main.java 中的示例一样。否则会导致错误: 原因:MediaException:MEDIA_UNAVAILABLE :C:\Users\david\git\Repo_Gruppe_A\AnwendungGruppeAfx\src\application\resources\systems-online.wav 对于我的队友来说,他们对消息 SourceCode/SourceCode 也有同样的错误。

音频播放器.java:

例如在 Main.java 中打开程序:

0 投票
1 回答
11 浏览

java-audio - 有没有办法将 JavaFX AudioClip 声音的多线程混合结果记录到磁盘?

我的程序启动从 FreeSound.org 流式传输的任意数量的声音,并使用 javafx.scene.media AudioClip 实例播放它们。

我试图弄清楚是否可以从同一个程序中将生成的输出捕获到磁盘?任何指针?

0 投票
0 回答
61 浏览

java - NullPointerException thrown in getCodeBase() to find audio clip

Using getCodeBase() for getAudioClip returns various errors.

I have tried putting my audio file in various locations in my project file* and tried using getDocumentBase instead, but it keeps returning the error.

*I've put it in bin, the the base of the project file, and the src file.

Expected to be able to run audio as part of my applet, but this is the error I keep getting:

0 投票
0 回答
24 浏览

java - 使用 AudioClip 没有声音,但没有发生错误

我必须使用 AudioClip 和 Applet 获得一个 .wav 剪辑,用于 Java 的大学作业。当我使用下面看到的代码时,即使使用 try-catch,我也不会出错。不太确定我哪里出错了,但任何帮助将不胜感激!

0 投票
0 回答
13 浏览

java - 我有一个旧的声音类,我想将它从使用 applet.AudioClip 更改为现代的东西,这样我就可以改变音量。我该怎么做?

我正在用 Java 开发一个带有一些可爱的 8 位 sfx 的游戏,我有这个 2011 年由 notch 制作的非常古老的声音类。这是一个很好的声音类,唯一的问题是我无法更改其中声音的音量,我已尝试多次更改它,但我总是遇到非常令人困惑的错误和 NullPointerExceptions。这是我的声音课:

如您所见,它使用的是 java.applet.AudioClip,我认为它不允许您更改使用它的音效的音量。所以这就是为什么我想弄清楚如何用更好的东西替换它,这样我仍然可以输入 Sound.soundname.play(); 但我也可以改变音量。