是否可以使用Javascript在音频文件中找到沉默的片段?
作者:互联网
我一直在研究使用Java脚本录制语音记录的工具.基本上,我连接了关键事件来播放,暂停和循环使用音频标签读取的文件.
有许多高级的现有桌面应用程序可以执行此类操作(例如Transcriber-这是screenshot).大多数转录工具都有一个内置波形,可用于在音频文件中跳转,这非常有用,因为转录器可以学习视觉上查找和重复或循环短语.
我想知道是否有可能使用Javascript在浏览器中模拟此功能的子集.我对信号处理了解不多,也许甚至不可行.
但是我设想的是Javascript从文件中读取声音流,并定期采样振幅.如果幅度非常低且持续时间超过某个阈值,则将其标记为短语中断.
我认为这种标记对于转录非常有用.然后,我可以设置关键命令以跳至之前的静默期.因此,假设(设想基于jQuery的API):
var audio = $('audio#someid');
var silences = silenceFindingVoodoo(audio);
静默将包含一个时间列表,因此我可以采用某种方式让用户跳过各种静默,然后将currentTime设置为选定的值并进行播放.
甚至可以想象用Java做这种事情吗?
解决方法:
我认为使用javascript可以做到这一点(当然,尽管并非明智之举).本文:
https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data
…讨论了如何将文件作为二进制数据访问,一旦将音频文件作为二进制数据访问,您就可以使用它进行任何操作(我想,无论如何-我对JavaScript并不是很坚强).对于WAV格式的音频文件,这将是一个微不足道的练习,因为数据已经按时域中的样本进行了组织.使用压缩格式的音频文件(例如MP3),将很难将压缩后的数据转换回时域样本,而在javascript中很难做到这一点,如果您成功地做到这一点,我就会发现您信奉宗教.
更新:再次阅读您的问题后,我意识到,即使文件是MP3格式而不是WAV格式,实际上也可以执行您正在使用javascript进行的讨论.据我了解您的问题,您实际上只是在寻找音频流中的静默点,而不是剥离静默段.
要定位无声拉伸,您不一定需要将MP3文件的频域数据转换回WAV文件的时域.实际上,在频域中比在时域中实际上可以更可靠地识别音频中的安静范围.安静的拉伸往往具有明显平坦的频率响应图,而在时域中,可听语音的峰值幅度有时不会比背景噪声的峰值高很多,尤其是在发生自动调平的情况下.
如果文件是CBR(恒定比特率)而不是VBR(可变比特率),则用javascript分析MP3文件将变得更加容易.
标签:audio,javascript,signal-processing 来源: https://codeday.me/bug/20191107/2002757.html