import sounddevice as sd
import numpy as np
from scipy.io.wavfile import write
import os
import subprocess
import pyttsx3
import time
import pyperclip
import pyautogui
def transkription_und_uebersetzung(aufnahme_dateiname):
# Führe die Transkription durch
command_transkrip = f"whisper {aufnahme_dateiname} --device cuda --model medium --output_dir transkrip"
os.system(command_transkrip)
# Führe die Übersetzung durch
command_transl = f"whisper {aufnahme_dateiname} --device cuda --model medium --output_dir transl --task translate"
os.system(command_transl)
# Konfiguration der Aufnahme
fs = 44100 # Abtastrate (Samples pro Sekunde)
# Starte die kontinuierliche Aufnahme
aufnahme = sd.InputStream(samplerate=fs, channels=1, dtype='int16')
aufnahme.start()
buffer = []
recording = True
print("Bitte sprechen Sie etwas ins Mikrofon...")
try:
while recording:
# Lies die aktuellen Audiodaten
audiodaten, _ = aufnahme.read(fs)
# Füge die aktuellen Audiodaten zum Puffer hinzu
buffer.extend(audiodaten)
# Überprüfe, ob der Puffer zu groß ist (2 Sekunden Stille)
if len(buffer) > fs * 20:
recording = False
except KeyboardInterrupt:
print("\nAufnahme manuell gestoppt.")
finally:
# Stoppe die Aufnahme
aufnahme.stop()
# Konvertiere den Buffer zu einem NumPy-Array
buffer = np.array(buffer)
# Speichern der Aufnahme als WAV-Datei mit fester Bezeichnung "aufnahme.wav"
aufnahme_dateiname = "aufnahme.wav"
write(aufnahme_dateiname, fs, buffer)
# Führe die restlichen Befehle aus
transkription_und_uebersetzung(aufnahme_dateiname)
print("Aufnahme, Transkription und Übersetzung abgeschlossen.")
# Wechsle zum Ordner "transl"
transl_ordner = "transkrip"
os.chdir(transl_ordner)
# Lese den Inhalt der Datei "aufnahme.txt"
ergebnis_dateiname = "aufnahme.txt"
with open(ergebnis_dateiname, 'r', encoding='utf-8') as file:
inhalt = file.read()
print(f"Inhalt der Datei {ergebnis_dateiname}:\n{inhalt}")
# Vorlesen des Inhalts per Audio
text_to_speech = pyttsx3.init()
text_to_speech.say(inhalt)
text_to_speech.runAndWait()
# Warte für eine kurze Zeit, damit das Vorlesen abgeschlossen werden kann
time.sleep(2)
# Lese den Inhalt der Datei "aufnahme.txt"
ergebnis_dateiname = "aufnahme.txt"
with open(ergebnis_dateiname, 'r', encoding='utf-8') as file:
inhalt = file.read()
print(f"Inhalt der Datei {ergebnis_dateiname}:\n{inhalt}")
# Kopiere den Text in die Zwischenablage
pyperclip.copy(inhalt)
# Füge den Text an der aktuellen Cursorposition ein (zum Beispiel durch Tastenkombination Strg+V)
pyautogui.hotkey('ctrl', 'v')
print("Text wurde an der aktuellen Cursorposition eingefügt.")