在python中的音频文件的不同位置插入不同数量的静音



我想插入不同的静音量,比如50毫秒、100毫秒等等。。在python中分别为音频的第2秒、音频的第10秒等等。我的音频文件是.wav格式的

我发现了以下代码:

def silence () 
    file = pickAFile()
    sound = makeSound(file)
    samples = getSamples(sound)
for sampNum in range(44100*2, 44100 * 4):
    sample = getSampleObjectAt(sound, sampNum)
    setSampleValue(sample,0);
play(sound)

这出现在以下链接上:

链路

此链接使用JES框架

但我不知道如何使用我想要实现的同一段代码来实现功能。有人能指导我吗?

音频样本只是一个数字,它定义了特定时间点音频曲线的高度。在您的代码函数"silence"中,将音频曲线从文件加载到数据结构(数组)"samples"

sampNum循环遍历一段索引值,检索每个样本索引的样本值(getSampleObjectAt)。。。然后将采样值设置为0(setSampleValue)。。。静默通常定义为值0

音频通常每秒采样44100次。。。所以忽略多通道和位深度,我认为这是由getSampleObjectAt处理的。。。该循环从检索样本

(44100*2, 44100 * 4)

这意味着它生成一个从2秒到4秒的样本索引列表

为了实现你的目标,只需计算出你的静音开始和结束的所需范围

goal A - start at second 2 silence for  50 millisec
       - start at 2000 millisec until 2050 millisec
       - from 2000 millisec to 2500 millisec
start_sample_index = sample_rate * 2000  / 1000
start_sample_index = 44100 * 2000  / 1000
start_sample_index = 88200
end_sample_index = sample_rate * 2050  / 1000
end_sample_index = 44100 * 2050  / 1000
end_sample_index = 90405

所以在伪码(未测试)中

set_silence_from_to_in_millisec(start_time, end_time, sample_rate, sound_obj) :
    start_index = sample_rate * start_time / 1000
    end_index   = sample_rate * end_time   / 1000
    for sampNum in range(start_index, end_index):
        sample = getSampleObjectAt(sound_obj, sampNum)
        setSampleValue(sample,0);

所以对于目标A来说,这将是

set_silence_from_to_in_millisec(2000, 2050, 44100, my_sound_obj)

相关内容

  • 没有找到相关文章

最新更新