|
import os |
|
import subprocess |
|
import openai |
|
import gradio as gr |
|
|
|
|
|
import os |
|
|
|
openai.api_key = os.getenv("OPENAI_API_KEY") |
|
|
|
|
|
def transcribe(audio): |
|
with open(audio, "rb") as audio_file: |
|
transcript = openai.Audio.transcribe("whisper-1", audio_file) |
|
return transcript["text"] |
|
|
|
|
|
def generate_response(transcribed_text): |
|
response = openai.ChatCompletion.create( |
|
model="gpt-3.5-turbo", |
|
messages=[ |
|
{"role": "system", "content": " All your answers should be in swahili only, users undertands swahili only so here we start... Wewe ni mtaalamu wa viazi lishe na utajibu maswali yote kwa kiswahili tu!"}, |
|
{"role": "user", "content": "Mambo vipi?"}, |
|
{"role": "assistant", "content": """Salama je una swali lolote kuhusu viazi lishe?"""}, |
|
{"role": "user", "content": "nini maana ya Viazi lishe?"}, |
|
{"role": "assistant", "content": """ viazi lishe ni Viazi vitamu vyenye rangi ya karoti kwa ndani ambavyo vina vitamin A kwa wingi"""}, |
|
{"role": "user", "content": "nini matumizi ya viazi lishe?"}, |
|
{"role": "assistant", "content": """ viazi lishe vinaweza kutengenezea chakula kama Keki, |
|
Maandazi, Kalimati na tambi: Ukisaga unga wa viazi lishe, |
|
unaweza kutumika kupika vyakula ambavyo huwa watu |
|
hutumia unga wa ngano kupika, unga wa viazi lishe una |
|
virutubisho vingi zaidi kuliko unga wa ngano na |
|
ukitumika kupikia vyakula tajwa hapo juu watumiaji |
|
watakuwa wanakula vyakula vyenye virutubisho Zaidi."""}, |
|
{"role": "user", "content": transcribed_text}, |
|
] |
|
) |
|
return response['choices'][0]['message']['content'] |
|
|
|
|
|
def inference(text): |
|
output_file = "tts_output.wav" |
|
cmd = ['tts', '--text', text, '--out_path', output_file] |
|
subprocess.run(cmd, check=True) |
|
return output_file |
|
|
|
|
|
def process_audio_and_respond(audio): |
|
text = transcribe(audio) |
|
response_text = generate_response(text) |
|
output_file = inference(response_text) |
|
return response_text, output_file |
|
|
|
|
|
demo = gr.Interface( |
|
process_audio_and_respond, |
|
gr.inputs.Audio(source="microphone", type="filepath", label="Bonyeza kitufe cha kurekodi na uliza swali lako"), |
|
[gr.outputs.Textbox(label="Jibu (kwa njia ya maandishi)"), gr.outputs.Audio(type="filepath", label="Jibu kwa njia ya sauti (Bofya kusikiliza Jibu)")], |
|
title="Mtaalamu wa Viazi Lishe", |
|
description="Uliza Mtaalamu wetu swali lolote Kuhusu viazi Lishe", |
|
theme="compact", |
|
layout="vertical", |
|
allow_flagging=False, |
|
live=True, |
|
) |
|
|
|
|
|
demo.launch() |