From 6a5062f3cfbdfd1070d10bb9ca17fe4261bf3aed Mon Sep 17 00:00:00 2001 From: kromskii2 <146603192+kromskii2@users.noreply.github.com> Date: Tue, 12 Nov 2024 15:17:33 +0700 Subject: [PATCH] Update log MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Update Log ## [v1.0.1] - 2024-11-12 ### Added - Добавлен скрипт `install.bat` для автоматической настройки виртуального окружения и установки зависимостей. - Добавлен скрипт `start.bat` для активации виртуального окружения и запуска `main.py`. - Добавлен `Dockerfile` для создания и запуска контейнера с ботом. - Добавлен скрипт `main.py`, использующий библиотеку `aiogram` для обработки голосовых сообщений и их конвертации в текст. ### Changed - Обновлен скрипт `main.py` для конвертации формата голосовых сообщений с использованием `pydub`. ### Fixed - Исправлены проблемы с импортом `aiogram` и обработкой формата `.oga` для голосовых сообщений. --- Dockerfile | 17 +++++++++++++++++ install.bat | 15 +++++++++++++++ main.py | 43 +++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 28 ++++++++++++++++++++++++++++ start.bat | 9 +++++++++ 5 files changed, 112 insertions(+) create mode 100644 Dockerfile create mode 100644 install.bat create mode 100644 main.py create mode 100644 requirements.txt create mode 100644 start.bat diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..114c25f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +# Используем официальный образ Python в качестве базового +FROM python:3.10-slim + +# Устанавливаем рабочую директорию внутри контейнера +WORKDIR /app + +# Копируем файл requirements.txt в рабочую директорию +COPY requirements.txt . + +# Устанавливаем зависимости +RUN pip install --no-cache-dir -r requirements.txt + +# Копируем все файлы проекта в рабочую директорию +COPY . . + +# Устанавливаем команду для выполнения при запуске контейнера +CMD ["python", "main.py"] diff --git a/install.bat b/install.bat new file mode 100644 index 0000000..fb6bfb0 --- /dev/null +++ b/install.bat @@ -0,0 +1,15 @@ +@echo off +REM Создание виртуального окружения +python -m venv venv + +REM Активация виртуального окружения +call venv\Scripts\activate + +REM Обновление pip +python.exe -m pip install --upgrade pip + +REM Установка зависимостей из requirements.txt +pip install -r requirements.txt + +echo Установка завершена! +pause diff --git a/main.py b/main.py new file mode 100644 index 0000000..03a0549 --- /dev/null +++ b/main.py @@ -0,0 +1,43 @@ +import os +from aiogram import Bot, Dispatcher, types +from aiogram.utils import executor +import speech_recognition as sr +from pydub import AudioSegment + +API_TOKEN = '7812128361:AAHtv_q-sGMKzJGVrEn4LAXpdieZPmlxfwc' +bot = Bot(token=API_TOKEN) +dp = Dispatcher(bot) + +@dp.message_handler(content_types=[types.ContentType.VOICE]) +async def handle_voice_message(message: types.Message): + # Сохранение голосового сообщения + file_info = await bot.get_file(message.voice.file_id) + file_path = file_info.file_path + voice_file = f"voice_{message.message_id}.oga" + wav_file = f"voice_{message.message_id}.wav" + + await bot.download_file(file_path, voice_file) + + # Конвертация .oga в .wav + audio = AudioSegment.from_ogg(voice_file) + audio.export(wav_file, format="wav") + + # Распознавание речи + recognizer = sr.Recognizer() + audio_file = sr.AudioFile(wav_file) + with audio_file as source: + audio_data = recognizer.record(source) + try: + text = recognizer.recognize_google(audio_data, language='ru-RU') + await message.answer(f"Распознанный текст: {text}") + + # Удаление голосового сообщения + os.remove(voice_file) + os.remove(wav_file) + except sr.UnknownValueError: + await message.answer("Не удалось распознать речь.") + except sr.RequestError as e: + await message.answer(f"Ошибка сервиса распознавания речи: {e}") + +if __name__ == '__main__': + executor.start_polling(dp, skip_updates=True) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..fc7dff8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,28 @@ +# requirements.txt + +aiofiles==24.1.0 +aiogram==2.25.1 +aiohappyeyeballs==2.4.3 +aiohttp==3.8.6 +aiosignal==1.3.1 +annotated-types==0.7.0 +async-timeout==4.0.3 +attrs==24.2.0 +Babel==2.9.1 +certifi==2024.8.30 +charset-normalizer==3.4.0 +ffmpeg==1.4 +frozenlist==1.5.0 +idna==3.10 +magic-filter==1.0.12 +multidict==6.1.0 +propcache==0.2.0 +pydantic==2.9.2 +pydantic_core==2.23.4 +pydub==0.25.1 +pytz==2024.2 +requests==2.32.3 +SpeechRecognition==3.11.0 +typing_extensions==4.12.2 +urllib3==2.2.3 +yarl==1.17.1 diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..06b24a8 --- /dev/null +++ b/start.bat @@ -0,0 +1,9 @@ +@echo off +REM Активация виртуального окружения +call venv\Scripts\activate + +REM Запуск main.py +python main.py + +echo Скрипт запущен! +pause