Не удается найти фай по указанному пути?

import tkinter as tk
from tkinter import simpledialog, filedialog, messagebox
from pydub import AudioSegment
from pydub.generators import Sine

# Функция для создания звукового сигнала "бип"
def generate_beep(duration_ms):
    # Генерируем звуковой сигнал с заданной длительностью и частотой
    return Sine(1000).to_audio_segment(duration=duration_ms).apply_gain(-20)

# Функция-заглушка для распознавания речи
def dummy_speech_recognition(audio_chunk, words_to_filter):

    return [i for i in range(0, len(audio_chunk), 5000) if "запрещенное слово" in words_to_filter]

class AudioFilterApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title('Аудио Фильтратор')

        self.initialize_ui()

        self.audio_file = None
        self.words_to_filter = []

    def initialize_ui(self):
        self.filename_entry = tk.Entry(self, width=50)
        self.filename_entry.grid(row=0, column=1)

        self.load_button = tk.Button(self, text="Выбрать аудио файл", command=self.load_file)
        self.load_button.grid(row=0, column=2)

        self.filter_mode_var = tk.StringVar(value="bleep")
        self.bleep_radio = tk.Radiobutton(self, text="Запикать слова", variable=self.filter_mode_var, value="bleep")
        self.bleep_radio.grid(row=1, column=0)
        self.cut_radio = tk.Radiobutton(self, text="Вырезать слова", variable=self.filter_mode_var, value="cut")
        self.cut_radio.grid(row=1, column=1)

        self.words_list_button = tk.Button(self, text="Редактировать список слов", command=self.edit_words_list)
        self.words_list_button.grid(row=2, column=0, columnspan=3)

        self.filter_button = tk.Button(self, text="Отфильтровать аудио файл и сохранить", command=self.filter_audio)
        self.filter_button.grid(row=3, column=0, columnspan=3)

    def load_file(self):
        file_path = filedialog.askopenfilename()
        if file_path:
            self.filename_entry.delete(0, tk.END)
            self.filename_entry.insert(0, file_path)
            try:
                self.audio_file = AudioSegment.from_file(file_path)
                messagebox.showinfo("Загрузка", "Файл успешно загружен!")
            except Exception as e:
                messagebox.showerror("Ошибка", f"Не удалось загрузить файл: {e}")
                self.audio_file = None

    def edit_words_list(self):
        words_string = simpledialog.askstring("Список слов", "Введите слова для фильтрации через запятую:")
        if words_string:
            self.words_to_filter = [word.strip().lower() for word in words_string.split(',')]

    def filter_audio(self):
        if not self.audio_file:
            messagebox.showerror("Ошибка", "Аудиофайл не загружен!")
            return
        
        # Получаем индексы начала запрещенных слов
        indexes_to_filter = dummy_speech_recognition(self.audio_file, self.words_to_filter)

        # Создаем новый аудиофайл
        new_audio = AudioSegment.empty()
        last_index = 0
        beep = generate_beep(1000)  # Длительность "бип" - 1000 мс

        for index in indexes_to_filter:
            new_audio += self.audio_file[last_index:index]
            if self.filter_mode_var.get() == "bleep":
                new_audio += beep
            last_index = index + 5000  # Предполагаемая длительность запрещенного слова

        new_audio += self.audio_file[last_index:]  # Добавляем оставшуюся часть аудио

        save_path = filedialog.asksaveasfilename(defaultextension=".mp3", filetypes=[("MP3 files", "*.mp3")])
        if save_path:
            new_audio.export(save_path, format="mp3")
            messagebox.showinfo("Сохранение", "Файл успешно сохранен!")

if __name__ == "__main__":
    app = AudioFilterApp()
    app.mainloop()

введите сюда описание изображения


Ответы (0 шт):