问题标签 [audiocontext]

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 投票
0 回答
80 浏览

javascript - 离线音频上下文

我有小问题。我正在尝试分析 mp3 声音。但我不想实时进行(它对我来说很完美)。我对 OfflineAudioContext 有问题,文档写得很糟糕,没有示例或其他内容。最好的结果是很多空数组[我的意思是很多零]。

我如何访问每个时刻的频率以进行可视化?

非常感谢您的回答,cya伙计们。

0 投票
0 回答
627 浏览

ios - Cordova Phonegap inappbrowser 失去 File Api 功能

我正在使用 Web Audio Api 开发一个应用程序。我发现 Safari 处理音频的方式存在内存泄漏,并且没有正确地对音频上下文进行垃圾分类。出于这个原因,我希望加载一个新页面。让那个页面创建Audio Context,完成操作然后关闭窗口,这样内存就被释放了。

我已经做了以下事情来实现这一点。

ref = window.open('record.html', '_self'); 这将根据https://wiki.apache.org/cordova/InAppBrowser在 Cordova WebView 中打开 record.html 页面

1 window.open('local-url.html');// 加载到 Cordova WebView
2 window.open('local-url.html', '_self');
// 在 Cordova WebView 中加载

record.html 页面加载一个 javascript 文件,该文件运行我希望运行的操作。这是对本机操作进行一些调用的 recordLoad.js 文件(本机 API 仅在加载到 Cordova Webview 时才可用,如您所见,我需要访问文件系统,所以这是我能看到的唯一方法做。

// 这个文件很长,但是一旦混合了两个音频缓冲区,它就会将一个新文件写入文件系统。当该操作完成后,我使用

}

我回到原来的 index.html 文件。这解决了内存问题。但是,一旦我尝试第二次运行相同的操作。即加载record.html文件,然后运行recordLoad.js文件我收到一个错误ReferenceError: Can't find variable: LocalFileSystem

似乎在 reload index.html 中丢失了一些但并非所有指向 Cordova API 的链接。例如,我仍然可以使用 Media Api,但不能使用 File Api。我知道这是一种解决内存泄漏的方法(打开和关闭窗口),但我找不到任何其他方法。我真的需要一些帮助。因此,非常欢迎任何指针。

0 投票
1 回答
1646 浏览

javascript - 在多个 iframe 中使用 AudioContext

我们有一个博客,其中的每篇文章都包含一个iframe在单击“播放”时应该使用 Web Audio 播放声音的文章。

问题是,在页面上出现一定数量的帖子后,下一帧会引发错误: Uncaught SyntaxError: Failed to construct 'AudioContext': number of hardware contexts reached maximum (6).

无法在帧之间重用单个 AudioContext -window.top由于同源策略而被禁止。

这是一个简化的示例: http: //jsfiddle.net/aobpv7kg/(单击添加帧,直到出现错误 - 在我的情况下为第 7 帧)。

页面中的任意数量的帧可以使用网络音频吗?或者我们能做的就是将每页的帖子数减少到 5 个?

0 投票
0 回答
217 浏览

javascript - 麦克风输入的电平归一化

自从将 Firefox 实现到版本 31 以来,我在使用 JavaScript Web Audio API 时遇到问题。我的脚本源没有改变。

它能做什么?我使用麦克风输入(生成的波形通过 3.5 毫米插孔移植到 PC),--> 增益--> 使用 ScriptProcessor 节点进行可视化。而且 - 一切正常,但现在在我看来,输入电平在发送到 GainNode 之前以某种方式进行了标准化。结果是波形可视化完全无法使用。下面的例子:

http://i.stack.imgur.com/hzEOR.png

我找不到任何方法来关闭此功能。唯一可行的方法是将 FF 降级到版本 30。我在 FF 31 的发行说明中进行了搜索,但是,我没有找到任何可以解释这种行为的东西......

有没有办法解决这个问题?为什么会这样?谢谢你。

0 投票
1 回答
7283 浏览

javascript - 如何使用 AudioContext HTML5 从麦克风获取音频数据

我正在尝试从我的麦克风获取数据流(例如音量、音高)。目前,我一直在使用getUserMedia来访问我的麦克风音频。但我找不到从中提取数据的方法。

我的代码:

0 投票
0 回答
81 浏览

javascript - AudioContext里面有什么方法可以让ByteTimeDomainData回声吗?

下面的代码是我可以将当​​前 TimeDomainData 放入数组的地方。

然后我可以使用 for 语句让每个fbc_array[i]值(时域波形)显示在画布上。

问题:

我想使用鼠标事件来触发鼠标悬停在时域波形上的声音。

AudioContext里面有没有什么方法可以让fbc_array[i]值回声呢?

0 投票
2 回答
1631 浏览

javascript - AudioContext:将音量增加 x 分贝

我正在使用 AudioContext() 进行听力测试,我想知道如何将音量提高/降低 x dB。甚至可能吗?

目前,我有一个 gainNode 连接到我的 AudioContext,它看起来(简而言之)是这样的:

要更改音量,我这样做:

在这里,我没有机会准确定义 dB 值。还有其他方法吗?

我认为问题是,浏览器永远不知道扬声器发出的声音的确切音量,因此没有基础来计算新的 dB 音量。

确定当前 dB 值的一种方法是通过 2 种声音的差异,例如测试声音(白噪声)和口语数字。为了计算差异,我找到了公式:

然后我有一个例如-6 dB的基础,当语音是-0.6并且噪声是-0.3时。但是如何将这个值提高某个 dB 值呢?

示例:我将 -6 dB 提高 5 dB 到 -1 dB。如何重新计算语音/噪音?

0 投票
1 回答
626 浏览

javascript - Android Chrome 39 getByteFrequencyData 返回 0 数组

我在这里有设置示例 - http://jsbin.com/hotovu/2/

在桌面 chrome 上一切都很好。Android Chrome 39 将所有数组返回到 0,0,0, ...(在用于 chrome 调试的 ADB 插件上)

任何解决方法可以使这项工作?

0 投票
1 回答
223 浏览

javascript - 写入服务器时来自麦克风的半速 AudioContext

我正在尝试在客户端 javascript 上编写麦克风录音,将其传输到服务器然后将其转换为丝绸。我使用扬声器模块使用这些设置在服务器上播放音频

但是当它被转换成丝绸时,它听起来是一半的速度。我相信它使用我没有编写的 C 类转换为丝绸会导致速度变慢,因为它作为 pcm 文件听起来不错。C文件有这些设置

我正在使用 BinaryJS 将代码作为 Int16array 写入服务器。

我会在这里复制代码,但我几乎是从本教程中逐字复制的。

http://blog.groupbuddies.com/posts/39-tutorial-html-audio-capture-streaming-to-node-js-no-browser-extensions

也很想知道我在比特率、采样率方面究竟从 audioContext 中得到了什么,以及如果我必须使用丝绸编解码器,如何对采样率进行下采样。

编辑:

我确实(有点)通过修改 onaudioprocess 解决了一半的速度,我通过删除一半的样本将 float32 转换为 Int16。

但是,音频音高仍然是一半。

0 投票
0 回答
1703 浏览

javascript - 在 Javascript 中更改录音的采样率

嗨,我在浏览器上有一个可用的录音机。它实现了 navigator.getUserMedia 和 AudioContext 它以 .wav 格式记录声音 - 然后转换为 .mp3 并上传文件。

文件采样率设置为 44100Hz,mp3 输出重新采样为 8000Hz。问题在于以这种采样率录制大型音频文件所需的本地存储量。我通过转换为 MP3 来减小文件大小,采样率为 8000。我读到sampleRate是只读的。所以我想可以在实例化时设置采样率。我的问题是如何使用 javascript 更改录音机的采样率?

注意。下面的代码已被修剪以显示感兴趣的部分。