Levman5
@Levman5
print(“Hello World!”)

Почему не удаётся найти путь?

У меня есть вот этот код:
import speech_recognition as sr
import pydub

def recognition(file_src, file_src2):
    sound = pydub.AudioSegment.from_mp3(file_src)
    sound.export(file_src2, format="wav")
    sample_audio = sr.AudioFile(file_src2)
    key = sr.recognize_google(sample_audio)
    return key


print(recognition('audio5.mp3', 'test.wav'))


Но при запуске я получаю ошибку:
Traceback (most recent call last):
  File "c:\Users\Дом\Desktop\Py\PY\e_garant_bot\audio_2_text.py", line 19, in <module>
    print(recognition('captcha_audio5.mp3', 'test.wav'))
  File "c:\Users\Дом\Desktop\Py\PY\e_garant_bot\audio_2_text.py", line 12, in recognition
    sound = pydub.AudioSegment.from_mp3(file_src)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python39\lib\site-packages\pydub\audio_segment.py", line 796, in from_mp3
    return cls.from_file(file, 'mp3', parameters=parameters)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python39\lib\site-packages\pydub\audio_segment.py", line 728, in from_file
    info = mediainfo_json(orig_file, read_ahead_limit=read_ahead_limit)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python39\lib\site-packages\pydub\utils.py", line 274, in mediainfo_json
    res = Popen(command, stdin=stdin_parameter, stdout=PIPE, stderr=PIPE)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Не удается найти указанный файл


Что я делаю не так?
  • Вопрос задан
  • 4859 просмотров
Решения вопроса 1
Levman5
@Levman5 Автор вопроса
print(“Hello World!”)
Нашёл ответ: https://progi.pro/kak-ispravit-filenotfounderror-w...

Код:
import speech_recognition as sr
from pydub import AudioSegment
import os, sys
from pathlib import Path








def recognition(file_src, file_src2):
    
    AudioSegment.converter = f"{os.getcwd()}\\ffmpeg.exe"
    AudioSegment.ffprobe = f"{os.getcwd()}\\ffprobe.exe"

    file_src = Path(file_src)
    file_src2 = Path(file_src2)

    audio = AudioSegment.from_mp3(file_src)

    
    audio.export(file_src2, format="wav")
    
    r = sr.Recognizer()
    with sr.AudioFile(open(file_src2, 'rb')) as source:
            audio = r.record(source)  # read the entire audio file                  

            return r.recognize_google(audio)


print(recognition('captcha_audio5.mp3', 'test.wav'))
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Я бы советовал для начала переместить код в папку в корне диска C без русских букв в path.
Ну и после этого я бы попытался просто открыть через with open(src_file, “rb”) - оно откроется?
(Кстати, для работы с путями к файлам рекомендую pathlib2, очень удобная штука. Там и проверка есть на наличие файлов и папок, и конкатенация через /, всё такое).
Ответ написан
@prosririty
Похожую штуку делал на Vosk. На винде тоже возникала эта ошибка. Оказалось нужно прописать полный путь в with subprocess.Popen(r"C:\ffmpeg\bin\ffmpeg.exe"....
Ответ написан
Комментировать
@diakc
На винде разбирал чужой код и получил похожую ошибку. Не сразу понял, что я пропустил установку модулей ffmpeg и кроме этого были проблемы с переменными окружения, которые просто пересохранил что бы ffmpeg стал виден для PowerShell и скрипту.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы