Spaces:
Sleeping
Sleeping
import os | |
from dotenv import load_dotenv | |
import openai | |
from flask import Flask, request, jsonify, send_file | |
from transformers import pipeline | |
from gtts import gTTS | |
app = Flask(__name__) | |
# Load environment variables from .env file | |
load_dotenv() | |
openai.api_key = os.getenv("OPENAI_API_KEY") | |
os.environ["HF_HOME"] = os.getenv("HF_HOME") | |
pipe = pipeline(model="seeafricatz/kiaziboraasr") | |
def transcribe(audio_path): | |
text = pipe(audio_path)["text"] | |
return text | |
def generate_response(transcribed_text): | |
response = openai.Completion.create( | |
engine="davinci", | |
prompt=transcribed_text, | |
max_tokens=50 | |
) | |
return response.choices[0].text | |
def inference(text): | |
tts = gTTS(text, lang='sw') | |
output_file = "tts_output.mp3" | |
tts.save(output_file) | |
return output_file | |
def process_audio(): | |
if 'audio' not in request.files: | |
return jsonify({'error': 'No audio file provided'}), 400 | |
audio_file = request.files['audio'] | |
audio_path = "temp_audio.wav" | |
audio_file.save(audio_path) | |
transcribed_text = transcribe(audio_path) | |
response_text = generate_response(transcribed_text) | |
output_file = inference(response_text) | |
return jsonify({ | |
'response_text': response_text, | |
'response_audio_url': f'/audio/{output_file}' | |
}) | |
def audio(filename): | |
return send_file(filename, as_attachment=True) | |
if __name__ == '__main__': | |
app.run() | |