我将一些音频数据加载到numpy数组中,我希望通过查找静音部分来分割数据,即音频幅度在一段时间内低于某个阈值的部分.
一个非常简单的方法是这样的:
values = ''.join(("1" if (abs(x) < SILENCE_THRESHOLD) else "0" for x in samples))
pattern = re.compile('1{%d,}'%int(MIN_SILENCE))
for match in pattern.finditer(values):
# code goes here
Run Code Online (Sandbox Code Playgroud)
上面的代码找到至少MIN_SILENCE个连续元素小于SILENCE_THRESHOLD的部分.
现在,显然,上面的代码非常低效,并且滥用正则表达式.是否有其他方法更有效,但仍然会产生同样简单和短的代码?