Spaces:
Runtime error
Runtime error
File size: 4,032 Bytes
bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 6e73788 dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 8d6a421 805a147 dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad dc3a007 bfb5aad 7406797 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
import gradio as gr
import os
import requests
from helpers import (
make_header,
upload_file,
request_transcript,
wait_for_completion,
make_paragraphs_string,
)
title = """<h1 align="center">🔥AssemblyAI: Conformer-1 Demo🔥</h1>"""
subtitle = (
"""<p align="center">Automatic Speech Recognition using the AssemblyAI API</p>"""
)
link = """<p align="center"><a href="https://www.assemblyai.com/blog/conformer-1/">Click here to learn more about the Conformer-1 model</a></p>"""
def submit_to_AAI(api_key, radio, audio_file, mic_recording):
if radio == "Audio File":
audio_data = audio_file
elif radio == "Record Audio":
audio_data = mic_recording
if not api_key:
return "Error! Did you use a valid API key?"
header = make_header(api_key)
# 1. Upload the audio
try:
upload_url = upload_file(audio_data, header, is_file=False)
except requests.exceptions.HTTPError:
return "Error! Did you use a valid API key?"
except requests.exceptions.ConnectionError:
return "Error! Did you use a valid API key?"
# if upload_url is None:
# return "Error: Did you set a valid API key?"
# 2. Request transcript
transcript_response = request_transcript(upload_url, header)
transcript_id = transcript_response["id"]
# 3. Wait for the transcription to complete
_, error = wait_for_completion(transcript_id, header)
if error is not None:
return error
# 4. Fetch paragraphs of transcript
return make_paragraphs_string(transcript_id, header)
def change_audio_source(radio):
if radio == "Audio File":
return [gr.Audio.update(visible=True), gr.Audio.update(visible=False)]
elif radio == "Record Audio":
return [gr.Audio.update(visible=False), gr.Audio.update(visible=True)]
with gr.Blocks(
css="""#col_container {width: 1000px; margin-left: auto; margin-right: auto;}
#chatbot {height: 520px; overflow: auto;}"""
) as demo:
gr.HTML(
'<center><a href="https://www.assemblyai.com/"><img src="file/images/logo.png" width="180px"></a></center>'
)
gr.HTML(title)
gr.HTML(subtitle)
gr.HTML(link)
gr.HTML(
"""<center><a href="https://huggingface.co/spaces/assemblyai/Conformer1-Demo?duplicate=true"><img src="https://bit.ly/3gLdBN6" alt="Duplicate Space"></a>Duplicate the Space and run securely with your AssemblyAI API Key. <a href="https://www.assemblyai.com/dashboard/signup">Get a free key here.</a></center>"""
)
with gr.Column(elem_id="col_container"):
api_key = gr.Textbox(
type="password", label="Enter your AssemblyAI API key here"
)
with gr.Box():
# Selector for audio source
radio = gr.Radio(
["Audio File", "Record Audio"], label="Audio Source", value="Audio File"
)
# Audio object for both file and microphone data
audio_file = gr.Audio()
mic_recording = gr.Audio(source="microphone", visible=False)
gr.Examples(
[
os.path.join(os.path.dirname(__file__), "audio/audio_sample1.flac"),
os.path.join(os.path.dirname(__file__), "audio/assemblyai_company.mp3")
],
audio_file,
)
btn = gr.Button("Run")
out = gr.Textbox(
placeholder="Your formatted transcript will appear here ...", lines=10
)
# Changing audio source changes Audio input component
radio.change(
fn=change_audio_source, inputs=[radio], outputs=[audio_file, mic_recording]
)
# Clicking "submit" uploads selected audio to AssemblyAI, performs requested analyses, and displays results
btn.click(
fn=submit_to_AAI,
inputs=[api_key, radio, audio_file, mic_recording],
outputs=out,
)
demo.queue(max_size=20, concurrency_count=10).launch(debug=True)
|