У меня есть несколько mp3-файлов с записанным голосом.Я хочу просмотреть каждый файл и разделить его на несколько новых файлов, когда молчание между предложениями длится дольше указанного времени в секундах.Я уже нашел library и функцию audioop.rms(fragment, width)
для измерения силы звука, но что-то пошло не так, когда я попытался его использовать.Это не дает никакого результата.Вот мой код:
from pathlib import Path
from audioop import rms
filePath = Path.home() / 'sounds' / 'recording.mp3'
voice_strength = 0.2
bytes_of_silence = 0
sample = []
fileIndex = 0
with open(filePath,'rb') as file:
for byte in file:
if voice_strength < rms(byte,1):
sample.append(byte)
bytes_of_silence = 0
else:
bytes_of_silence+=1
if bytes_of_silence < 4:
if len(sample)>1:
fileIndex+=1
with open(filePath.parent / f'new{fileIndex}{directory.suffix}', 'w') as newFile:
for part in sample:
newFile.write(part)
sample=[]
bytes_of_silence = 0
Вместо молчания, измеренного в секундах, я делал это в байтах (я не был уверен, как я могу получить это время в секундах).voice_strength
имеет пример значения (я видел, что Audacity показывает масштаб от -1 до 1, и я хотел установить что-то между, чтобы увидеть, может ли скрипт вырезать мой файл).Может кто-нибудь объяснить мне, что я сделал не так и как я могу это исправить, пожалуйста?