pawipa commited on
Commit
e76c7d1
·
1 Parent(s): 249fdb2

first draft without AI

Browse files
Files changed (2) hide show
  1. Fraunhofer-IPA-Logo.jpg +0 -0
  2. app.py +136 -145
Fraunhofer-IPA-Logo.jpg ADDED
app.py CHANGED
@@ -1,154 +1,145 @@
1
  import gradio as gr
2
- import numpy as np
3
- import random
4
-
5
- # import spaces #[uncomment to use ZeroGPU]
6
- from diffusers import DiffusionPipeline
7
- import torch
8
-
9
- device = "cuda" if torch.cuda.is_available() else "cpu"
10
- model_repo_id = "stabilityai/sdxl-turbo" # Replace to the model you would like to use
11
-
12
- if torch.cuda.is_available():
13
- torch_dtype = torch.float16
14
- else:
15
- torch_dtype = torch.float32
16
-
17
- pipe = DiffusionPipeline.from_pretrained(model_repo_id, torch_dtype=torch_dtype)
18
- pipe = pipe.to(device)
19
-
20
- MAX_SEED = np.iinfo(np.int32).max
21
- MAX_IMAGE_SIZE = 1024
22
-
23
-
24
- # @spaces.GPU #[uncomment to use ZeroGPU]
25
- def infer(
26
- prompt,
27
- negative_prompt,
28
- seed,
29
- randomize_seed,
30
- width,
31
- height,
32
- guidance_scale,
33
- num_inference_steps,
34
- progress=gr.Progress(track_tqdm=True),
35
- ):
36
- if randomize_seed:
37
- seed = random.randint(0, MAX_SEED)
38
-
39
- generator = torch.Generator().manual_seed(seed)
40
-
41
- image = pipe(
42
- prompt=prompt,
43
- negative_prompt=negative_prompt,
44
- guidance_scale=guidance_scale,
45
- num_inference_steps=num_inference_steps,
46
- width=width,
47
- height=height,
48
- generator=generator,
49
- ).images[0]
50
-
51
- return image, seed
52
-
53
-
54
- examples = [
55
- "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",
56
- "An astronaut riding a green horse",
57
- "A delicious ceviche cheesecake slice",
58
- ]
59
-
60
- css = """
61
- #col-container {
62
- margin: 0 auto;
63
- max-width: 640px;
64
- }
65
- """
66
-
67
- with gr.Blocks(css=css) as demo:
68
- with gr.Column(elem_id="col-container"):
69
- gr.Markdown(" # Speech-to-Text Service")
70
-
71
- with gr.Row():
72
- prompt = gr.Text(
73
- label="Prompt",
74
- show_label=False,
75
- max_lines=1,
76
- placeholder="Enter your prompt",
77
- container=False,
78
- )
79
 
80
- run_button = gr.Button("Run", scale=0, variant="primary")
 
81
 
82
- result = gr.Image(label="Result", show_label=False)
 
 
 
 
 
 
 
83
 
84
- with gr.Accordion("Advanced Settings", open=False):
85
- negative_prompt = gr.Text(
86
- label="Negative prompt",
87
- max_lines=1,
88
- placeholder="Enter a negative prompt",
89
- visible=False,
 
 
 
90
  )
91
-
92
- seed = gr.Slider(
93
- label="Seed",
94
- minimum=0,
95
- maximum=MAX_SEED,
96
- step=1,
97
- value=0,
98
  )
99
 
100
- randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
101
-
102
- with gr.Row():
103
- width = gr.Slider(
104
- label="Width",
105
- minimum=256,
106
- maximum=MAX_IMAGE_SIZE,
107
- step=32,
108
- value=1024, # Replace with defaults that work for your model
109
- )
110
-
111
- height = gr.Slider(
112
- label="Height",
113
- minimum=256,
114
- maximum=MAX_IMAGE_SIZE,
115
- step=32,
116
- value=1024, # Replace with defaults that work for your model
117
- )
118
-
119
- with gr.Row():
120
- guidance_scale = gr.Slider(
121
- label="Guidance scale",
122
- minimum=0.0,
123
- maximum=10.0,
124
- step=0.1,
125
- value=0.0, # Replace with defaults that work for your model
126
- )
127
-
128
- num_inference_steps = gr.Slider(
129
- label="Number of inference steps",
130
- minimum=1,
131
- maximum=50,
132
- step=1,
133
- value=2, # Replace with defaults that work for your model
134
- )
135
-
136
- gr.Examples(examples=examples, inputs=[prompt])
137
- gr.on(
138
- triggers=[run_button.click, prompt.submit],
139
- fn=infer,
140
- inputs=[
141
- prompt,
142
- negative_prompt,
143
- seed,
144
- randomize_seed,
145
- width,
146
- height,
147
- guidance_scale,
148
- num_inference_steps,
149
- ],
150
- outputs=[result, seed],
151
  )
152
 
153
- if __name__ == "__main__":
154
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ import time
3
+ import os
4
+ import zipfile
5
+ from typing import List, Tuple, Generator
6
+
7
+ # Initial status message
8
+ STANDARD_OUTPUT_TEXT = "**Status:**<br>"
9
+
10
+ def process_files_with_live_updates(
11
+ files: List[gr.File],
12
+ dropdown_option: str,
13
+ dropdown_option_2: str
14
+ ) -> Generator[Tuple[str, List[str]], None, None]:
15
+ """
16
+ Processes a list of uploaded files and provides live updates with progress.
17
+
18
+ Args:
19
+ files (List[gr.File]): List of files uploaded by the user.
20
+ dropdown_option (str): Selected option from the first dropdown.
21
+ dropdown_option_2 (str): Selected option from the second dropdown.
22
+
23
+ Yields:
24
+ Tuple[str, List[str]]: Updated status message and list of processed file paths.
25
+ """
26
+ file_details = []
27
+ total_files = len(files)
28
+ output_files = []
29
+
30
+ # Create a folder to temporarily store output files
31
+ output_dir = "output_files"
32
+ os.makedirs(output_dir, exist_ok=True)
33
+
34
+ for idx, file in enumerate(files):
35
+ # Simulate file processing
36
+ time.sleep(1)
37
+
38
+ # Add to file details
39
+ detail = (
40
+ f"**File Name**: {file.name} - {dropdown_option} - {dropdown_option_2}<br>"
41
+ )
42
+ file_details.append(detail)
43
+
44
+ # Generate a .txt file
45
+ txt_filename = os.path.join(output_dir, f"output_file_{idx + 1}.txt")
46
+ with open(txt_filename, "w") as txt_file:
47
+ txt_file.write(f"Original File Name: {file.name}")
48
+ output_files.append(txt_filename)
49
+
50
+ # Update progress bar and yield the updated Markdown
51
+ yield (
52
+ f"**Status: {int(((idx + 1) / total_files) * 100)}%**<br>" + "".join(file_details),
53
+ output_files,
54
+ )
55
+
56
+ # Create a zip archive
57
+ zip_filename = os.path.join(output_dir, "output_files.zip")
58
+ with zipfile.ZipFile(zip_filename, "w") as zipf:
59
+ for file_path in output_files:
60
+ zipf.write(file_path, os.path.basename(file_path))
61
+ output_files.append(zip_filename)
62
+
63
+ # Final yield
64
+ yield (
65
+ f"**Status: {int(((idx + 1) / total_files) * 100)}%**<br>" + "".join(file_details),
66
+ output_files,
67
+ )
 
 
 
 
 
 
 
 
 
 
 
68
 
69
+ # Gradio app layout
70
+ with gr.Blocks() as demo:
71
 
72
+ # Title and Description
73
+ gr.Markdown("# AI-Powered Speech-to-Text Batch Processor")
74
+ gr.Markdown(
75
+ """
76
+ Upload multiple audio files, select desired processing options, and view real-time updates as files are transcribed.
77
+ The application uses advanced AI models for sequential speech-to-text translation.
78
+ """
79
+ )
80
 
81
+ # Input section
82
+ with gr.Row():
83
+ with gr.Column():
84
+ file_input = gr.Files(file_types=[".wav", ".mp3"], label="Upload your audio files")
85
+ with gr.Column():
86
+ dropdown = gr.Dropdown(
87
+ choices=["Language: English", "Language: German", "Language: French"],
88
+ label="Select Language",
89
+ value="Language: English",
90
  )
91
+ dropdown_2 = gr.Dropdown(
92
+ choices=["Format: Plain Text", "Format: JSON", "Format: SRT"],
93
+ label="Select Output Format",
94
+ value="Format: Plain Text",
 
 
 
95
  )
96
 
97
+ # Buttons
98
+ with gr.Row():
99
+ submit_button = gr.Button("Start Transcription")
100
+ clear_button = gr.Button("Clear")
101
+
102
+ # Output section
103
+ output_md = gr.Markdown(label="Transcription Progress", value=STANDARD_OUTPUT_TEXT)
104
+ output_files = gr.Files(label="Generated Output Files")
105
+
106
+ # Button actions
107
+ submit_button.click(
108
+ process_files_with_live_updates,
109
+ inputs=[file_input, dropdown, dropdown_2],
110
+ outputs=[output_md, output_files],
111
+ )
112
+
113
+ clear_button.click(
114
+ lambda: (None, "Language: English", "Format: Plain Text", STANDARD_OUTPUT_TEXT, None),
115
+ inputs=[], # No inputs
116
+ outputs=[file_input, dropdown, dropdown_2, output_md, output_files],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  )
118
 
119
+ gr.Textbox(os.getcwd(), label="Current Working Directory")
120
+
121
+ gr.Image("Fraunhofer-IPA-Logo.jpg", show_label=False)
122
+
123
+ # Centered Footer with Logo and Licensing Text
124
+ with gr.Row():
125
+ gr.Markdown(
126
+ """
127
+ **Fraunhofer IPA**
128
+ This application is provided under a basic licensing agreement for non-commercial use only.
129
+ For inquiries, visit [Fraunhofer IPA](https://www.ipa.fraunhofer.de).
130
+ """,
131
+ elem_id="footer-markdown",
132
+ )
133
+
134
+ # CSS to center the footer content
135
+ demo.css = """
136
+ #footer-markdown {
137
+ text-align: center;
138
+ margin-top: 20px;
139
+ padding-top: 10px;
140
+ border-top: 1px solid #ccc;
141
+ }
142
+ """
143
+
144
+ # Launch app
145
+ demo.launch()