|
import streamlit as st |
|
import firebase_admin |
|
from firebase_admin import credentials |
|
from firebase_admin import firestore |
|
import datetime |
|
from transformers import pipeline |
|
import gradio as gr |
|
|
|
@st.experimental_singleton |
|
def get_db_firestore(): |
|
cred = credentials.Certificate('test.json') |
|
firebase_admin.initialize_app(cred, {'projectId': u'clinical-nlp-b9117',}) |
|
db = firestore.client() |
|
return db |
|
|
|
|
|
db = get_db_firestore() |
|
asr = pipeline("automatic-speech-recognition", "facebook/wav2vec2-base-960h") |
|
|
|
def transcribe(audio): |
|
text = asr(audio)["text"] |
|
return text |
|
|
|
classifier = pipeline("text-classification") |
|
|
|
def speech_to_text(speech): |
|
text = asr(speech)["text"] |
|
return text |
|
|
|
def text_to_sentiment(text): |
|
sentiment = classifier(text)[0]["label"] |
|
return sentiment |
|
|
|
def upsert(text): |
|
date_time =str(datetime.datetime.today()) |
|
doc_ref = db.collection('Text2SpeechSentimentSave').document(date_time) |
|
doc_ref.set({u'firefield': 'Recognize Speech', u'first': 'https://huggingface.co/spaces/awacke1/Text2SpeechSentimentSave', u'last': text, u'born': date_time,}) |
|
saved = select('Text2SpeechSentimentSave', date_time) |
|
|
|
return saved |
|
|
|
def select(collection, document): |
|
doc_ref = db.collection(collection).document(document) |
|
doc = doc_ref.get() |
|
docid = ("The id is: ", doc.id) |
|
contents = ("The contents are: ", doc.to_dict()) |
|
return contents |
|
|
|
def selectall(text): |
|
docs = db.collection('Text2SpeechSentimentSave').stream() |
|
doclist='' |
|
for doc in docs: |
|
|
|
|
|
|
|
r=(f'{doc.id} => {doc.to_dict()}') |
|
doclist += r |
|
return doclist |
|
|
|
demo = gr.Blocks() |
|
|
|
with demo: |
|
|
|
audio_file = gr.inputs.Audio(source="microphone", type="filepath") |
|
text = gr.Textbox() |
|
label = gr.Label() |
|
saved = gr.Textbox() |
|
savedAll = gr.Textbox() |
|
|
|
b1 = gr.Button("Recognize Speech") |
|
b2 = gr.Button("Classify Sentiment") |
|
b3 = gr.Button("Save Speech to Text") |
|
b4 = gr.Button("Retrieve All") |
|
|
|
b1.click(speech_to_text, inputs=audio_file, outputs=text) |
|
b2.click(text_to_sentiment, inputs=text, outputs=label) |
|
b3.click(upsert, inputs=text, outputs=saved) |
|
b4.click(selectall, inputs=text, outputs=savedAll) |
|
|
|
demo.launch(share=True) |