【发布时间】:2014-05-24 13:48:03
【问题描述】:
我需要从 wav 文件中截取小片段(音素),大约需要 0.1 秒(例如 0.3698125 - 0.466125
我正在使用 wave 模块,但它无法处理它:-/ 有人知道如何处理它吗?
这个脚本应该打开文件,剪切并添加到新的文件中
data = fonemy[fonem][0] = start, end, path ([0.3698125, 0.466125, u'hds/data/speech_16kHz/utt001.wav'])
frames = ""
text = "hello"
for fonem in text:
data = fonemy[fonem][0]
win = wave.open(data[2], 'rb')
wout = wave.open('segment.wav', 'wb')
wout.setparams(win.getparams())
t0 = data[0]
t1= data[1]
s0, s1= int(t0*win.getframerate()), int(t1*win.getframerate())
win.readframes(s0) # discard
frames = frames + win.readframes(s1-s0)
wout.writeframes(frames)
【问题讨论】:
-
这看起来不错,实际上。 但它无法处理是什么意思?预期的结果是什么?你会得到什么?
-
我需要从 0.3698125 到 0.466125 的音频样本,这个函数不起作用,它需要整数,所以样本的开头和结尾都是 0 - 它什么都不会读
-
你能告诉我
print t0, t1, win.getframerate()返回什么吗? -
一次迭代 0.3698125 0.466125 16000 - 帧率还是一样,只是时间在变
-
int(0.3698125*16000) == 5917。那么“样本的开始和结束是0”是什么意思?