问题标签 [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.
javascript - 使用 AnalyserNode 提高 FFT 分辨率
我想我可能对使用 AnalyserNode 有点困惑。我目前将我的 userAudio 流“line-in”连接到 AnalyserNode。然后我使用getByteFrequencyData()
.
当我播放单个 440Hz 音调时,阵列中强度最高的频率将是 468Hz或421Hz(取决于我改变它的程度)。有没有办法可以提高这些频率的分辨率,使其在 468 和 421Hz 之间有更多的频率?
当我用 440Hz 音调绘制 fft 数据时,您可以看到 468Hz 和 421Hz 处的两个强烈频率。有没有办法将 FFT 数据平均到一个单独的数组中,以便平均 468Hz 和 421Hz(以及其他点)数据点的强度?我想这就像在频率之间插入数据......
JSFiddle: http: //jsfiddle.net/puYw3/(我不确定这是否真的有效,因为我当前的计算机上没有麦克风)。
javascript - OfflineAudioContext FFT 分析仍然在 chrome 中中断?
我一直在尝试在带有脚本处理器的 chrome 中使用 OfflineAudioContext 和 FFT 分析器,但我遇到了与此人相同的问题:OfflineAudioContext FFT analysis with chrome
在那个 SO 答案中,有人指出了这个错误报告:https ://bugs.webkit.org/show_bug.cgi?id=113274但它已经有一年多了!
我的问题是:有谁知道这是否会很快得到修复,我应该在其他地方提交错误吗?是否仍在查看该错误报告(即一年前)?或者更好的是,也许有人知道解决方法?我的代码基本上与那个 SO 链接上的 jsfiddle 相同。
很遗憾,这些东西在 chrome 中不起作用,但在 Firefox 中起作用。
javascript - 如何从 AudioContext 获取麦克风数据
所以,我刚刚发现您可以使用 javascript 录制声音。这太棒了!
我立即创建了新项目来自己做某事。然而,当我打开示例脚本的源代码时,我发现根本没有任何解释性注释。
我开始用谷歌搜索,发现一篇关于 AudioContext 的长而有趣的文章 根本不知道录音(它只提到了 remixinf 声音)和MDN 文章,其中包含所有信息 - 成功隐藏了我想要的那个。
我也知道处理这件事的现有框架(不知何故,也许)。但如果我想要一台录音机,我会下载一个——但我真的很好奇它是如何工作的。
现在不仅我不熟悉事物的编码部分,而且我也很好奇整个事物将如何工作 - 我是否会在特定时间获得强度?就像在任何示波器中一样?或者我可以对样品进行光谱分析吗?
所以,为了避免任何错误:请,谁能解释使用上述 API 获取输入数据并最终提供带有解释性注释的代码的最简单和最直接的方法?
javascript - 如何避免播放正在录制的声音
我说的是反馈 - 当您制作一个简单的 JavaScript 应用程序时,它会打开来自用户的流并读取频率分析(或其他任何内容),它会将所有接收到的数据发送回 Google Chrome 和 Opera 中的耳机。Firefox 大部分时间都处于沉默状态,并随机产生不稳定反馈的巨大混乱——它还会在几秒钟后关闭流。一般来说,这个东西在 Firefox 中还不起作用。
我创造了一个小提琴。如果您的浏览器不支持它,您只会在我假设的控制台中收到错误。
代码的关键部分是当用户接受麦克风访问请求时调用的函数:
零增益的想法不是我的,我是从简单的录音机演示中偷来的。但是对他们有用的东西对我不起作用。该演示在 Firefox 中也没有问题,就像我一样。
javascript - javascript readAsArrayBuffer 返回空数组缓冲区
我正在尝试使用 FileReader readAsArrayBuffer 属性读取本地文件。读取成功,在“onload”回调中,我在 reader.result 中看到了 Array Buffer 对象。但是数组缓冲区只是空的。长度已设置,但数据未设置。我如何获得这些数据?
这是我的代码
reader.result 的控制台输出
谁能告诉我如何获取这些数据?有什么安全问题吗?没有错误,onerror没有执行。
来自评论:你能告诉我如何访问缓冲区内容吗?我实际上正在尝试使用AudioContext
...播放音频文件为此我需要缓冲区数据...
javascript - 如何通过 javascript/html5 播放 wav 音频字节数组?
我正在使用以下方法播放包含 wav 数据的字节数组。正在从 GWT 项目调用该函数。
此功能播放声音,但听起来像是某种地狱般的怪物。采样率绝对正确(声音是由 neospeech 生成的),我尝试了 numberOfSamples 的各种值,这似乎代表了音频数据的长度。
numberOfSamples 的值大于 30000 将播放音频文件的完整长度,但会出现乱码和可怕的问题。
那么,我做错了什么?
javascript - Icecast 流未通过 AudioContext 加载
我想为 HTML5/JS 中的 icecast 流创建一个视觉播放器。我知道您必须使用 AudioContext 才能使其正常工作,但我无法让它在 Chrome 之外工作,并且不知道为什么。
- 铬工作正常
- Firefox/Opera 什么都不做
- 不支持 IE 警报 Web 音频 API
请参阅下面的小提琴以获取工作示例。
奇怪的是,如果我尝试使用本地 mp3 文件,Chrome/FF/(Opera?) 中一切正常
我很确定它与这条线有关..
offline - OfflineAudioContext 只渲染和调用一次 onComplete
我创建了一个离线上下文来基于渲染的缓冲区渲染可视化,并调用 startRendering() 以在 onComplete 回调中获取渲染的缓冲区。如果我尝试创建一组新的已连接音频节点,则再次调用 startRendering() 不会执行任何操作。我是否必须为每个渲染重新创建整个离线上下文?
node.js - 使用 NodeJs 中的 WebAudio API
我想在 NodeJS 中使用 WebAudio(AudioContext)。但是 NodeJS 不支持 WebAudio。有一个用于 web-audio-api 的 npm,但它仍处于 alpha 阶段且不完整。
那么如何在 NodeJS 中使用 WebAudio(AudioContext)。
我可以从 NodeJS 实例化一个 chrome 浏览器环境并利用它的功能吗?这可能吗?还有其他方法吗?
请帮忙。
javascript - AudioContext() 的多个来源
我有两个一秒钟的音频源,如下所示:
现在我想播放这两个音频源,它们之间没有延迟。对于单一来源,我可以使用以下代码播放音频:
我怎样才能附加第二个来源,以便它们之间没有延迟。