This commit is contained in:
Anton Palgunov 2023-04-01 21:43:44 +01:00
parent 333c36c4fd
commit a9623e6985
4 changed files with 78 additions and 5 deletions

46
.dockerignore Normal file
View File

@ -0,0 +1,46 @@
# .dockerignore
# Игнорировать каталоги с кэшем и логами
__pycache__
*.pyc
*.pyo
*.pyd
*.log
# Игнорировать виртуальное окружение и зависимости
venv
*.egg-info/
dist/
build/
.virtualenv/
.pyenv/
# Игнорировать файлы и каталоги системы контроля версий
.git
.gitignore
.svn
.hg
.hgignore
# Игнорировать файлы конфигурации IDE и редакторов
.vscode/
.idea/
*.swp
*.swo
*.swn
*.bak
# Игнорировать файлы тестов и документации
tests/
docs/
# Игнорировать файлы для развертывания и среды
.dockerignore
Dockerfile
*.yml
*.yaml
*.sh
*.md
*.txt
!requirements.txt
LICENSE

View File

@ -1,5 +1,10 @@
FROM python:3.9-slim-buster
# Установить зависимости для FFmpeg
RUN apt-get update && \
apt-get install -y --no-install-recommends ffmpeg && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt requirements.txt

8
bot.py
View File

@ -11,6 +11,7 @@ import hashlib
import threading
from datetime import datetime, timedelta
from transcription_dict import TranscriptionDict
from custom_openai import CustomAudio
# Load the environment variables from the .env file
load_dotenv()
@ -146,19 +147,16 @@ def handle_voice_message(message):
audio_bytes = bytearray(mp3_data.read())
transcript = openai.Audio.transcribe("whisper-1", file=audio_bytes, filename="voice_message.mp3")
transcript = CustomAudio.transcribe("whisper-1", file=audio_bytes, filename="voice_message.mp3")
transcription = transcript['text']
# Return the transcribed text back to the user
bot.reply_to(message, transcription)
transcription_hash = hashlib.md5(transcription.encode('utf-8')).hexdigest()[:8]
transcription_dict.set(transcription_hash, transcription)
markup = telebot.types.InlineKeyboardMarkup()
markup.add(telebot.types.InlineKeyboardButton("Отправить текст", callback_data=f"voice_text:{transcription_hash}"))
bot.send_message(message.chat.id, f"Текст сообщения: {transcription}", reply_markup=markup)
bot.reply_to(message, transcription, reply_markup=markup)
else:
bot.reply_to(message, "Не удалось получить голосовое сообщение.")

24
custom_openai.py Normal file
View File

@ -0,0 +1,24 @@
from openai.api_resources.abstract import APIResource
from openai.api_resources.audio import Audio
from openai import util
class CustomAudio(Audio):
@classmethod
def transcribe(
cls,
model,
file,
filename,
api_key=None,
api_base=None,
api_type=None,
api_version=None,
organization=None,
**params,
):
requestor, files, data = cls._prepare_request(file, filename, model, **params)
url = cls._get_url("transcriptions")
response, _, api_key = requestor.request("post", url, files=files, params=data)
return util.convert_to_openai_object(
response, api_key, api_version, organization
)