gpt4 book ai didi

python - 使用python编辑wav文件

转载 作者:太空狗 更新时间:2023-10-30 01:39:40 24 4
gpt4 key购买 nike

在 wav 文件中的每个单词之间我有完全的静音(我检查了 Hex workshop 并且静音用 0 表示)。

如何切断非静音声音?

我正在使用 python 编程。

谢谢!

最佳答案

Python 有一个 wav module .您可以使用它打开一个 wav 文件进行阅读,并使用 `getframes(1)' 命令逐帧浏览文件。

import wave
w = wave.open('beeps.wav', 'r')
for i in range():
frame = w.readframes(1)

返回的帧将是一个包含十六进制值的字节字符串。如果文件是立体声,结果将如下所示(4 字节):

'\xe2\xff\xe2\xff'

如果是单声道,它将有一半的数据(2 个字节):

'\xe2\xff'

因为音频是 16 位的,所以每个 channel 都是 2 个字节长。如果是 8 位,则每个 channel 将只有一个字节。您可以使用 getsampwidth() 方法来确定这一点。此外,getchannels() 将确定它是单声道还是立体声。

您可以遍历这些字节以查看它们是否都为零,这意味着两个 channel 都是静音的。在下面的示例中,我使用 ord() 函数将 '\xe2' 十六进制值转换为整数。

import wave
w = wave.open('beeps.wav', 'r')
for i in range(w.getnframes()):
### read 1 frame and the position will updated ###
frame = w.readframes(1)

all_zero = True
for j in range(len(frame)):
# check if amplitude is greater than 0
if ord(frame[j]) > 0:
all_zero = False
break

if all_zero:
# perform your cut here
print 'silence found at frame %s' % w.tell()
print 'silence found at second %s' % (w.tell()/w..getframerate())

值得注意的是,单帧静音并不一定表示空白空间,因为振幅可能会越过 0 标记的正常频率。因此,建议先观察一定数量的 0 帧,然后再确定该区域是否实际上是无声的。

关于python - 使用python编辑wav文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com