Как разделить mp3-файл, когда тишина длиннее указанного времени в секундах? - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть несколько 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, и я хотел установить что-то между, чтобы увидеть, может ли скрипт вырезать мой файл).Может кто-нибудь объяснить мне, что я сделал не так и как я могу это исправить, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...