Как исправить проблему с удалением файла в Python?

Как можно улучшить код для записи и распознавания аудио с использованием библиотек Python, таких как vosk, speech_recognition, wave, json и os?
  • 29 апреля 2024 г. 16:40
Ответы на вопрос 3
Для исправления проблемы с удалением файла в Python, можно использовать следующий код:

```python
import os

file_path = "path/to/file"

try:
    os.remove(file_path)
    print("Файл успешно удален")
except OSError:
    print("Не удалось удалить файл")
```

Чтобы улучшить код для записи и распознавания аудио с использованием указанных библиотек, можно использовать следующий шаблонный пример:

```python
import wave
import json
import os
import speech_recognition as sr
from vosk import Model, KaldiRecognizer

def record_audio(file_path):
    recognizer = sr.Recognizer()
    mic = sr.Microphone()

    with mic as audio_file:
        audio_data = recognizer.listen(audio_file)

        with open(file_path, "wb") as file:
            file.write(audio_data.get_wav_data())

def recognize_audio(file_path):
    model = Model("model_path")
    recognizer = KaldiRecognizer(model, 16000)
    
    wf = wave.open(file_path, "rb")
    
    if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getframerate() != 16000:
        print("Audio file must be 16kHz mono PCM.")
        return
    
    while True:
        data = wf.readframes(4000)
        if len(data) == 0:
            break
        if recognizer.AcceptWaveform(data):
            result = json.loads(recognizer.Result())
            print(result["text"])

file_path = "path/to/audio.wav"
record_audio(file_path)
recognize_audio(file_path)
```

В этом примере используется библиотека SpeechRecognition для записи аудио с микрофона и библиотека Vosk для распознавания аудио. Перед использованием необходимо установить данные библиотеки с помощью pip.
тебе явно указали в чем причина <b>FileNotFoundError</b> <br/> <br/> <blockquote> Я нашел на хабре статью "Пишем голосового ассистента на python"</blockquote> это тоже причина, ты делаешь то чего не понимаешь, все статьи про "голосового ассистента" это из ютубных хайпожеров, надо сразу такое в игнор
Смотрим в код программы: <br/> <br/> <pre><code>voice_input = record_and_recognize_audio()
os.remove("microphone-results.wav")</code></pre> <br/> <br/> Внутри функции record_and_recognize_audio. Однако если внутри случается исключение (speech_recognition.WaitTimeoutError) из-за ошибки, то файл не будет создан. Соответственно, удалять будет просто нечего. <br/> <br/> Как решать? Ну для начала можно просто не удалять файл. Всё равно он при каждом вызове функции перезатирается. Не самое плохое решение, на самом деле. <br/> <br/> А лучше проверять возвращаемое функцией значение, да и выявить и порешать исхожную проблему тоже надо бы. <br/> <br/> Но ещё более правильно почитать учебник или какие-то уроки по основам языка. Программировать копипастами чужого кода без какого-либо понимания - так себе путь.
Похожие вопросы