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

2024-06-24 13:47:07 发布

您现在位置: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)

这在以下链接中显示:

link

这个链接使用的是JES框架

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


Tags: sample代码数量链接def格式音频音频文件
1条回答
网友
1楼 · 发布于 2024-06-24 13:47:07

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

sampNum循环遍历一段索引值,检索每个示例索引的示例值(getSampleObjectAt)。。。然后将采样值设置为0(setSampleValue)。。。沉默被规范地定义为值0

音频通常每秒采样44100次。。。所以忽略多通道和位深度,我假设这是由getSampleObjectAt处理的。。。此循环从以下位置检索示例:

(44100*2, 44100 * 4)

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

为了达到你的目标,只要计算出你沉默的开始和结束所需的范围

^{pr2}$

所以在伪代码中(未测试)

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)

相关问题 更多 >