gstaff commited on
Commit
027e874
β€’
1 Parent(s): 1ba22b4

Add recording hotkey support.

Browse files
Files changed (1) hide show
  1. app.py +28 -3
app.py CHANGED
@@ -88,8 +88,32 @@ def copy_notify(code):
88
  gr.Info("App code snippet copied!")
89
 
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  with gr.Blocks() as demo:
92
- gr.Markdown("<h1 align=\"center\">KiteWind πŸͺπŸƒ</h1>")
93
  gr.Markdown(
94
  "<h4 align=\"center\">Chat-assisted web app creator by <a href=\"https://huggingface.co/gstaff\">@gstaff</a></h4>")
95
  selectedTab = gr.State(value='stlite')
@@ -102,7 +126,7 @@ with gr.Blocks() as demo:
102
  with gr.Row():
103
  with gr.Column():
104
  with gr.Group():
105
- in_audio = gr.Audio(label="Record a voice request", source='microphone', type='filepath')
106
  in_prompt = gr.Textbox(label="Or type a text request and press Enter",
107
  placeholder="Need an idea? Try one of these:\n- Add a button to reverse the name\n- Change the greeting to Spanish\n- Make the button primary")
108
  out_text = gr.TextArea(label="Chat Assistant Response")
@@ -141,7 +165,7 @@ with gr.Blocks() as demo:
141
  with gr.Row():
142
  with gr.Column():
143
  with gr.Group():
144
- in_audio = gr.Audio(label="Record a voice request", source='microphone', type='filepath')
145
  in_prompt = gr.Textbox(label="Or type a text request and press Enter",
146
  placeholder="Need an idea? Try one of these:\n- Add a button to reverse the name\n- Change the greeting to Hola\n- Put the reversed name output into a separate textbox\n- Change the theme from monochrome to soft")
147
  out_text = gr.TextArea(label="Chat Assistant Response")
@@ -176,6 +200,7 @@ with gr.Blocks() as demo:
176
  gradio_lite_tab.select(lambda: "gradio-lite", None, selectedTab).then(None, None, None,
177
  _js=load_js(DemoType.GRADIO))
178
  demo.load(None, None, None, _js=load_js(DemoType.STREAMLIT))
 
179
  demo.css = "footer {visibility: hidden}"
180
 
181
  if __name__ == "__main__":
 
88
  gr.Info("App code snippet copied!")
89
 
90
 
91
+ def add_hotkeys() -> str:
92
+ return """() => {
93
+ function gradioApp() {
94
+ const elems = document.getElementsByTagName('gradio-app');
95
+ const elem = elems.length == 0 ? document : elems[0];
96
+
97
+ if (elem !== document) {
98
+ elem.getElementById = function(id) {
99
+ return document.getElementById(id);
100
+ };
101
+ }
102
+ return elem.shadowRoot ? elem.shadowRoot : elem;
103
+ }
104
+ window.addEventListener('keydown', (e) => {
105
+ if (e.keyCode == 192 && e.ctrlKey) { // CTRL + ` key
106
+ const recordButton = gradioApp().querySelector("div.mic-wrap > button");
107
+ console.log(recordButton);
108
+ recordButton.click();
109
+ }
110
+ });
111
+ }
112
+ """
113
+
114
+
115
  with gr.Blocks() as demo:
116
+ gr.Markdown("<h1 id=\"TEST\" align=\"center\">KiteWind πŸͺπŸƒ</h1>")
117
  gr.Markdown(
118
  "<h4 align=\"center\">Chat-assisted web app creator by <a href=\"https://huggingface.co/gstaff\">@gstaff</a></h4>")
119
  selectedTab = gr.State(value='stlite')
 
126
  with gr.Row():
127
  with gr.Column():
128
  with gr.Group():
129
+ in_audio = gr.Audio(label="Record a voice request (click or press ctrl + ` to start/stop)", source='microphone', type='filepath')
130
  in_prompt = gr.Textbox(label="Or type a text request and press Enter",
131
  placeholder="Need an idea? Try one of these:\n- Add a button to reverse the name\n- Change the greeting to Spanish\n- Make the button primary")
132
  out_text = gr.TextArea(label="Chat Assistant Response")
 
165
  with gr.Row():
166
  with gr.Column():
167
  with gr.Group():
168
+ in_audio = gr.Audio(label="Record a voice request (click or press ctrl + ` to start/stop)", source='microphone', type='filepath')
169
  in_prompt = gr.Textbox(label="Or type a text request and press Enter",
170
  placeholder="Need an idea? Try one of these:\n- Add a button to reverse the name\n- Change the greeting to Hola\n- Put the reversed name output into a separate textbox\n- Change the theme from monochrome to soft")
171
  out_text = gr.TextArea(label="Chat Assistant Response")
 
200
  gradio_lite_tab.select(lambda: "gradio-lite", None, selectedTab).then(None, None, None,
201
  _js=load_js(DemoType.GRADIO))
202
  demo.load(None, None, None, _js=load_js(DemoType.STREAMLIT))
203
+ demo.load(None, None, None, _js=add_hotkeys())
204
  demo.css = "footer {visibility: hidden}"
205
 
206
  if __name__ == "__main__":