Почему код в Colab работает, а в Pycharm нет?

Есть код преобразования голоса в текст в телеграм_боте :
import urllib.request

url = "https://drive.google.com/uc?export=view&id=1aBZnHgsjg7XIVlvpYasOOJ8hurp7V6Ww"
filename = "skillbox_voice_sample.oga"
urllib.request.urlretrieve(url, filename)

import os, sys
import telebot
import speech_recognition
from pydub import AudioSegment

import pathlib
from pathlib import Path
# new_filename = Path(filename.replace('.oga', '.wav'))



# Ниже нужно вставить токен, который дал BotFather при регистрации
# Пример: token = '2007628239:AAEF4ZVqLiRKG7j49EC4vaRwXjJ6DN6xng8'
token = '***************************'  # <<< Ваш токен

bot = telebot.TeleBot(token)


def oga2wav(filename):
    # Конвертация формата файлов
    new_filename = filename.replace('.oga', '.wav')
    audio = AudioSegment.from_file(filename)
    audio.export(new_filename, format='wav')

    new_filename = Path(filename.replace('.oga', '.wav'))
    audio = Path(AudioSegment.from_file(filename))

    return new_filename


def recognize_speech(oga_filename):
    # Перевод голоса в текст + удаление использованных файлов
    wav_filename = oga2wav(oga_filename)
    recognizer = speech_recognition.Recognizer()

    with speech_recognition.WavFile(wav_filename) as source:
        wav_audio = recognizer.record(source)

    text = recognizer.recognize_google(wav_audio, language='ru')

    wav_filename = Path(oga2wav(oga_filename))
    recognizer = Path(speech_recognition.Recognizer())
    text = Path(recognizer.recognize_google(wav_audio, language='ru'))

    if os.path.exists(oga_filename):
        os.remove(oga_filename)

    if os.path.exists(wav_filename):
        os.remove(wav_filename)
    # if os.path.isfile('C:/Users/Oleg/PycharmProjects/Telegram_project/skillbox_voice_sample.oga'):
    #     os.remove(oga_filename)
    #
    # if os.path.isfile('C:/Users/Oleg/PycharmProjects/Telegram_project/wav_filename'):
    #     os.remove(wav_filename)

    return text


def download_file(bot, file_id):
    # Скачивание файла, который прислал пользователь
    file_info = bot.get_file(file_id)
    downloaded_file = bot.download_file(file_info.file_path)
    filename = file_id + file_info.file_path
    filename = filename.replace('/', '_')
    with open(filename, 'wb') as f:
        f.write(downloaded_file)

    # file_info = Path(bot.get_file(file_id))
    # downloaded_file = Path(bot.download_file(file_info.file_path))
    # filename = Path(file_id + file_info.file_path)

    return filename


@bot.message_handler(commands=['start'])
def say_hi(message):
    # Функция, отправляющая "Привет" в ответ на команду /start
    bot.send_message(message.chat.id, 'Привет')


@bot.message_handler(content_types=['voice'])
def transcript(message):
    # Функция, отправляющая текст в ответ на голосовое
    filename = download_file(bot, message.voice.file_id)
    text = recognize_speech(filename)
    bot.send_message(message.chat.id, text)

    # filename = Path(download_file(bot, message.voice.file_id))


# Запускаем бота. Он будет работать до тех пор, пока работает ячейка
# (крутится значок слева).
# Остановим ячейку - остановится бот
bot.polling()

Установлены библиотеки:
pip install pyTelegramBotAPI SpeechRecognition pydub

На выходе ошибка:
File "C:\Users\Oleg\AppData\Local\Programs\Python\Python312\Lib\subprocess.py", line 1538, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] Не удается найти указанный файл

Этот же код в Colab работает:
https://colab.research.google.com/drive/1HzluTgZFS_ALYOUkpYEt38IN4TUTbkOU

Чего не так?
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 1
@krox
аспирант, программист, исследователь
Под виндой некоторые библиотеки питона не работают. Колаб гугла работает на линуксе. Если надо работать под виндой - либо WSL ставить, либо виртуалку
Ответ написан
Ваш ответ на вопрос

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

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