Приглушить части файла Wave, используя Python / FFMPEG / Pydub - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в Python, пожалуйста, потерпите меня. Я смог добиться этого с помощью Google / StackOverflow и YouTube :). Так что у меня длинный (2 часа) * .wav файл. Я хочу отключить некоторые части этого файла. У меня есть все эти временные метки [start], [stop] в файле «Timestamps.txt» за считанные секунды. Вот так:

   0001.000 0003.000
   0744.096 0747.096
   0749.003 0750.653
   0750.934 0753.170
   0753.210 0754.990
   0756.075 0759.075
   0760.096 0763.096
   0810.016 0811.016
   0815.849 0816.849

Что я смог сделать, так это прочитать файл и изолировать каждый кортеж. Я только что вывел первый кортеж и распечатал его, чтобы проверить, все ли выглядит хорошо. Кажется, что изоляция кортежа работает :) Я планирую подсчитать количество кортежей (в данном случае это 674) и добавить 'для l oop' в соответствии с этим количеством и изменить время запуска и остановки в соответствии с кортеж Выполните l oop для этого единственного * .wav файла и выведите его в файл с приглушенными секциями в качестве меток времени. Я понятия не имею, как реализовать мое мышление с помощью FFMPEG или любой другой утилиты в Python, например, pydub. Пожалуйста, помогите мне.

   with open('Timestamps.txt') as f:
   data = [line.split() for line in f.readlines()]
   out = [(float(k), float(v)) for k, v in data]

   r = out[0] 
   x= r[0]
   y= r[1]
   #specific x and y values
   print(x)
   print(y)

1 Ответ

0 голосов
/ 20 апреля 2020

Я принял это решение, но для его запуска потребуются годы:)

with open('Timestamps.txt') as f:
   data = [line.split() for line in f.readlines()]
   out = [(float(k), float(v)) for k, v in data]

   count = len(out)

   import ffmpy
   import os

   for o in range(count):

       r= out[o]
       x= r[0]
       y= r[1]

       os.system("ffmpeg -y -i %d.wav -af volume=enable='between(t,%d,%d)':volume=0 %d.wav" %(o,x,y,o+1))
       r= 0
       x= 0
       y= 0
       file= "%d.wav" %o
       os.remove(file)
...