ASHA-assistant / app.py
mukul-wai's picture
Update app.py
6f1466d
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import ElasticVectorSearch, Pinecone, Weaviate, FAISS
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
import gradio as gr
import openai
import os
from bark import SAMPLE_RATE, generate_audio, preload_models
from scipy.io.wavfile import write as write_wav
from IPython.display import Audio
api_key = os.getenv('OPENAI_API_KEY')
openai.api_key = api_key
# connect your Google Drive
"""from google.colab import drive
drive.mount('/content/gdrive', force_remount=True)
root_dir = "/content/gdrive/My Drive/"
data_path = '/content/gdrive/My Drive/CDSS/LLM Demos/ASHA material'
"""
from langchain.document_loaders import PyPDFDirectoryLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.document_loaders import UnstructuredPDFLoader
from langchain.llms import OpenAI
from langchain.chains.question_answering import load_qa_chain
pdf_folder_path = 'ASHAmaterial'
loader = PyPDFDirectoryLoader(pdf_folder_path)
pages = loader.load_and_split()
embeddings = OpenAIEmbeddings(openai_api_key =api_key)
docsearch = Chroma.from_documents(pages, embeddings).as_retriever()
from pydub import AudioSegment
# download and load all models
preload_models()
lang_dict = {
"English": "en",
}
# generate audio from text
text_prompt = """
Hello, my name is Suno. And, uh β€” and I like pizza. [laughs]
But I also have other interests such as playing tic tac toe.
"""
#audio_array = generate_audio(text_prompt)
# save audio to disk
#write_wav("bark_generation.wav", SAMPLE_RATE, audio_array)
# play text in notebook
#Audio(audio_array, rate=SAMPLE_RATE)
def get_asr_output(audio_path,lang = 'English'):
audio = AudioSegment.from_file(audio_path)
audio.export("temp.wav", format="wav")
file = open("temp.wav","rb")
transcription = openai.Audio.transcribe("whisper-1", file, language=lang)
op_text = transcription.text
""" if lang == "hi":
op_text = asr_pipe("temp.wav")['text']
print('whisper',transcription)
print('ai4b',op_text) """
return op_text
def greet(audio, lang, if_audio=True):
query = get_asr_output(audio, lang_dict[lang])
return query
def greet2(query):
docs = docsearch.get_relevant_documents(query)
chain = load_qa_chain(OpenAI(temperature=0,openai_api_key =api_key ), chain_type="stuff")
answer = chain.run(input_documents=docs, question=query)
return answer
def get_audio2(answer):
audio_array = generate_audio(answer)
write_wav("bark_generation.wav", SAMPLE_RATE, audio_array)
return 24000, audio_array
def hello():
return "hey"
def dummy(name):
return "bark_generation.wav"
lang = gr.Radio(list(lang_dict.keys()), label="Select a Language")
with gr.Blocks(title="ASHA Saheli") as demo:
gr.Image('asha.png', shape = (10,10))
lang = gr.Radio(list(lang_dict.keys()), label="Select a Language")
user_audio = gr.Audio(source="microphone",type="filepath",label = "Speak your query")
text = gr.Textbox(placeholder="Question", name = "Question / Voice Transcription", show_label=False)
output = gr.Textbox(placeholder="The answer will appear here", interactive=False, show_label = False)
get_text_from_audio = gr.Button("Transcribe")
get_text_from_audio.click(greet,[user_audio, lang],[text])
submit = gr.Button("Submit")
submit.click(greet2, [text], [output])
#get_audio = gr.Button('Get Audio')
#audio = gr.Audio()
#get_audio.click(get_audio2, output, audio)
demo.launch()