В настоящее время я использую этот код, чтобы разрезать аудиофайл на небольшие куски:
sound = AudioSegment.from_mp3("1.WAV")
f=open("decoded.txt", "a+")
chunks = split_on_silence(sound,min_silence_len=280,silence_thresh=-33,keep_silence=150)
for i, chunk in enumerate(chunks):
print(i)
print("\n")
chunk.export(folder+"/chunk{0}.wav".format(i), format="wav")
AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), folder+"/chunk{0}.wav".format(i))
r = sr.Recognizer()
with sr.AudioFile(AUDIO_FILE) as source:
print("Listening...")
audio = r.record(source) # read the entire audio file
f.write((r.recognize_google(audio) +" "))
f.close();
Это создает куски файлов, разделенные в соответствии с тишиной... Но я хочу, чтобы всякий раз, когда аудио разбивается, следующий фрагмент начинался с 2 секунд назад, так что любое слово, которое может быть вырезано, может появиться. Что-то вроде того, что если тишина во время 10,13,18,22, то мои фрагменты должны быть 0-10,8-13,11-18,16-22. Я использую pydub для разделения по тишине. Могу ли я что-то изменить в pydub или есть какой-то другой пакет, который работает?