使用Javascript可以在音频文件中找到沉默的延伸吗?
我一直在开发一个用Javascript转录语音记录的工具。基本上,我正在连接关键事件以播放、暂停和循环使用使用Javascript可以在音频文件中找到沉默的延伸吗?,javascript,audio,signal-processing,Javascript,Audio,Signal Processing,我一直在开发一个用Javascript转录语音记录的工具。基本上,我正在连接关键事件以播放、暂停和循环使用audio标记读入的文件 有许多先进的现有桌面应用程序可以做这类事情(比如——这里有一个例子)。大多数转录工具都有一个内置的波形,可以用来在音频文件中跳转,这非常有帮助,因为转录者可以学习视觉上查找、重复或循环短语 我想知道是否有可能在浏览器中用Javascript模拟这个功能的一个子集。我对信号处理知之甚少,也许它甚至不可行 但我设想的是Javascript从文件中读取声音流,并定期采样振
audio
标记读入的文件
有许多先进的现有桌面应用程序可以做这类事情(比如——这里有一个例子)。大多数转录工具都有一个内置的波形,可以用来在音频文件中跳转,这非常有帮助,因为转录者可以学习视觉上查找、重复或循环短语
我想知道是否有可能在浏览器中用Javascript模拟这个功能的一个子集。我对信号处理知之甚少,也许它甚至不可行
但我设想的是Javascript从文件中读取声音流,并定期采样振幅。如果振幅非常低,持续时间超过某个阈值,那么这将被标记为短语中断
我认为,这样的标签对转录非常有用。然后,我可以设置关键命令,跳转到前一段沉默时间。因此,假设(想象一个基于jQuery的API):
静默
将包含一个时间列表,因此我可以通过某种方式让用户在各种静默
中跳跃,然后将当前时间
设置为所选值,并播放它
甚至可以用Javascript做这种事情吗 据我所知,JavaScript不够强大,无法做到这一点 要做到这一点,您必须求助于flash或某种服务器端处理
使用HTML5音频/视频标签,您可能能够欺骗页面,使其执行类似的操作。您可以(假设)在服务器端识别静默,并将这些静默的时间戳作为页面中的元数据(隐藏字段或其他内容)发送到客户端,然后使用该时间戳允许JavaScript识别音频文件中的那些点。如果您使用WebWorker线程,您可以在JavaScript中执行此操作,但这需要在浏览器中使用更多线程来完成。您可以将问题分解为多个线程并进行处理,但是,将其与回放同步几乎是不可能的。因此,Javascript可以通过进行一些音频处理来确定静音时段,但由于不能很好地将其与播放链接起来,因此这不是最佳选择 但是,如果您想向用户显示波形,那么可以使用javascript和canvas,但请参阅下一段中的流
你最好的办法是让服务器对音频进行流式传输,它可以进行处理并找到所有的静音。然后,每个文件都应该保存在一个单独的文件中,这样您就可以轻松地在静音之间切换,通过流媒体,您的服务器应用程序可以确定何时加载新文件,这样就不会出现中断。我不认为JavaScript是您想要用来处理这些音频文件的工具-这是自找麻烦。但是,javascript可以轻松地读取相应的XML文件,该文件描述了这些静音在音频文件中发生的位置,并适当地调整了用户界面。然后,问题是如何生成这些XML文件:
drawTimeDomain()
:
var阈值=1000;
var总和=0;
for(var i
var audio = $('audio#someid');
var silences = silenceFindingVoodoo(audio);
var threshold = 1000;
var sum = 0;
for (var i in amplitudeArray) {
sum += Math.abs(128 - amplitudeArray[i]);
}
var test = (sum < threshold) ? 'silent' : 'sound';
console.log('silent info', test);