mgokg commited on
Commit
6dc1316
·
verified ·
1 Parent(s): 79c7151

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -35
app.py CHANGED
@@ -15,10 +15,12 @@ if not api_key:
15
  # Groq-Client initialisieren
16
  client = Groq(api_key=api_key)
17
 
18
- def process_audio(audio_data):
19
- """Verarbeitet Audiodaten und gibt Transkript zurück"""
20
  try:
21
- samples, sample_rate = audio_data # Korrigierte Reihenfolge
 
 
22
 
23
  with NamedTemporaryFile(suffix=".wav", delete=False) as tmpfile:
24
  sf.write(tmpfile.name, samples, sample_rate)
@@ -35,52 +37,36 @@ def process_audio(audio_data):
35
  except Exception as e:
36
  return f"Fehler: {str(e)}"
37
  finally:
38
- if tmpfile:
39
  os.unlink(tmpfile.name)
40
 
41
  # Streamlit UI
42
- st.title("🎤 Live Audio Transkription")
43
- st.info("Erlaube Mikrofonzugriff im Browser wenn gefragt!")
44
 
45
- col1, col2 = st.columns(2)
 
 
 
 
 
 
46
 
47
- with col1:
48
- st.subheader("Option 1: Mikrofonaufnahme")
49
- audio_bytes = st.audio_input(
50
- "Sprich jetzt:",
51
- type="wav",
52
- key="mic_input"
53
- )
54
-
55
- with col2:
56
- st.subheader("Option 2: Datei-Upload")
57
- uploaded_file = st.file_uploader(
58
- "Oder Datei hochladen:",
59
- type=["wav", "mp3"],
60
- key="file_upload"
61
- )
62
-
63
- # Verarbeitung
64
- if audio_bytes or uploaded_file:
65
  with st.spinner("Verarbeite Audio..."):
66
  try:
67
- if audio_bytes:
68
- # Mikrofonaufnahme verarbeiten
69
- audio_io = io.BytesIO(audio_bytes)
70
- audio_data = sf.read(audio_io)
71
- else:
72
- # Hochgeladene Datei verarbeiten
73
- audio_data = sf.read(uploaded_file)
74
 
75
  # Transkription durchführen
76
- result = process_audio(audio_data)
77
 
78
  # Ergebnis anzeigen
79
  st.subheader("Transkription:")
80
  st.success(result)
81
 
82
  # Audio-Player anzeigen
83
- st.audio(audio_bytes or uploaded_file)
84
 
85
  except Exception as e:
86
- st.error(f"Verarbeitungsfehler: {str(e)}")
 
15
  # Groq-Client initialisieren
16
  client = Groq(api_key=api_key)
17
 
18
+ def process_audio(audio_bytes):
19
+ """Verarbeitet Audio-Bytes und gibt Transkript zurück"""
20
  try:
21
+ # Konvertiere Bytes in Audio-Daten
22
+ audio_io = io.BytesIO(audio_bytes)
23
+ samples, sample_rate = sf.read(audio_io)
24
 
25
  with NamedTemporaryFile(suffix=".wav", delete=False) as tmpfile:
26
  sf.write(tmpfile.name, samples, sample_rate)
 
37
  except Exception as e:
38
  return f"Fehler: {str(e)}"
39
  finally:
40
+ if 'tmpfile' in locals():
41
  os.unlink(tmpfile.name)
42
 
43
  # Streamlit UI
44
+ st.title("🎤 Audio Transkription")
45
+ st.info("Funktioniert auf Hugging Face Spaces!")
46
 
47
+ # Kombinierter Uploader für Datei und Mikrofon
48
+ audio_file = st.file_uploader(
49
+ "Aufnahme starten oder Datei hochladen",
50
+ type=["wav"],
51
+ accept_multiple_files=False,
52
+ help="Klicken Sie auf 'Browse Files' und wählen Sie im Browser 'Take a recording'"
53
+ )
54
 
55
+ if audio_file:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  with st.spinner("Verarbeite Audio..."):
57
  try:
58
+ # Datei in Bytes lesen
59
+ audio_bytes = audio_file.read()
 
 
 
 
 
60
 
61
  # Transkription durchführen
62
+ result = process_audio(audio_bytes)
63
 
64
  # Ergebnis anzeigen
65
  st.subheader("Transkription:")
66
  st.success(result)
67
 
68
  # Audio-Player anzeigen
69
+ st.audio(audio_bytes, format="audio/wav")
70
 
71
  except Exception as e:
72
+ st.error(f"Fehler: {str(e)}")