diff --git a/app/services/language_detection_service.py b/app/services/language_detection_service.py index c3205b6..bb2e172 100644 --- a/app/services/language_detection_service.py +++ b/app/services/language_detection_service.py @@ -3,6 +3,9 @@ import tempfile import whisper import ffmpeg from typing import Optional +import logging + +logger = logging.getLogger(__name__) async def detect_language_from_video(video_content: bytes) -> Optional[str]: @@ -51,5 +54,5 @@ async def detect_language_from_video(video_content: bytes) -> Optional[str]: except Exception as e: # Log error but don't fail the upload - print(f"Language detection failed: {e}") + logger.error(f"Language detection failed: {e}") return None \ No newline at end of file diff --git a/app/services/transcription_service.py b/app/services/transcription_service.py index 32cd6c4..7a29d1a 100644 --- a/app/services/transcription_service.py +++ b/app/services/transcription_service.py @@ -1,5 +1,5 @@ import os -import openai +from openai import AsyncOpenAI from typing import Optional import logging import tempfile @@ -12,11 +12,11 @@ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") if not OPENAI_API_KEY: logger.warning("OpenAI API key not configured") -openai.api_key = OPENAI_API_KEY +client = AsyncOpenAI(api_key=OPENAI_API_KEY) if OPENAI_API_KEY else None async def transcribe_video_audio(video_s3_url: str) -> Optional[str]: - if not OPENAI_API_KEY: + if not client: logger.error("OpenAI API key not configured") return None @@ -38,7 +38,7 @@ async def transcribe_video_audio(video_s3_url: str) -> Optional[str]: try: # Transcribe using OpenAI Whisper with open(temp_file_path, 'rb') as audio_file: - transcript = openai.Audio.transcribe( + transcript = await client.audio.transcriptions.create( model="whisper-1", file=audio_file, response_format="text" diff --git a/app/services/translation_service.py b/app/services/translation_service.py index 642ddb9..7ce0b58 100644 --- a/app/services/translation_service.py +++ b/app/services/translation_service.py @@ -1,5 +1,5 @@ import os -import openai +from openai import AsyncOpenAI from typing import Optional import logging @@ -10,11 +10,11 @@ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") if not OPENAI_API_KEY: logger.warning("OpenAI API key not configured") -openai.api_key = OPENAI_API_KEY +client = AsyncOpenAI(api_key=OPENAI_API_KEY) if OPENAI_API_KEY else None async def translate_text(text: str, target_language: str, source_language: str = "auto") -> Optional[str]: - if not OPENAI_API_KEY: + if not client: logger.error("OpenAI API key not configured") return None @@ -45,7 +45,7 @@ async def translate_text(text: str, target_language: str, source_language: str = prompt = f"Translate the following text from {source_lang_name} to {target_lang_name}. Maintain the original tone and meaning:\n\n{text}" # Use GPT-4 for translation - response = openai.ChatCompletion.create( + response = await client.chat.completions.create( model="gpt-4", messages=[ { diff --git a/main.py b/main.py index 28b4685..41c2c5f 100644 --- a/main.py +++ b/main.py @@ -3,11 +3,15 @@ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager import logging +from dotenv import load_dotenv from app.db.session import engine from app.db.base import Base from app.routes import auth, videos, transcription, translation, voice_cloning, video_processing, profile +# Load environment variables from .env file +load_dotenv() + # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) diff --git a/requirements.txt b/requirements.txt index daad55c..e969b2f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,8 +4,10 @@ python-multipart==0.0.6 sqlalchemy==2.0.23 alembic==1.12.1 boto3==1.34.0 -openai==1.3.7 +openai==1.51.0 openai-whisper==20231117 +torch==2.1.2 +torchaudio==2.1.2 python-decouple==3.8 ruff==0.1.6 requests==2.31.0