aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.philipp.yaml4
-rw-r--r--data/own/Philipp_HerrK.txt1
-rw-r--r--data/own/Silja_erklärt_die_welt.txt1
-rw-r--r--data/own/marvin_rede.txt1
-rw-r--r--data/own/valentins_diss_gegen_marvin.txt1
-rw-r--r--readme.md16
-rw-r--r--swr2_asr/inference.py31
7 files changed, 45 insertions, 10 deletions
diff --git a/config.philipp.yaml b/config.philipp.yaml
index 3ff1059..cbeabfe 100644
--- a/config.philipp.yaml
+++ b/config.philipp.yaml
@@ -27,8 +27,8 @@ decoder:
beam_size: 500
beam_threshold: 150
n_best: 1
- lm_weight: 5
- word_score: -1
+ lm_weight: 2
+ word_score: -2
training:
learning_rate: 0.0005
diff --git a/data/own/Philipp_HerrK.txt b/data/own/Philipp_HerrK.txt
new file mode 100644
index 0000000..e4bcbd6
--- /dev/null
+++ b/data/own/Philipp_HerrK.txt
@@ -0,0 +1 @@
+«Ich habe bemerkt», sagte Herr K., «daß wir viele abschrecken von unserer Lehre dadurch, daß wir auf alles eine Antwort wissen. Könnten wir nicht im Interesse der Propaganda eine Liste der Fragen aufstellen, die uns ganz ungelöst erscheinen?» \ No newline at end of file
diff --git a/data/own/Silja_erklärt_die_welt.txt b/data/own/Silja_erklärt_die_welt.txt
new file mode 100644
index 0000000..878c6ba
--- /dev/null
+++ b/data/own/Silja_erklärt_die_welt.txt
@@ -0,0 +1 @@
+Das Bundesverwaltungsgericht hat einen Schlussstrich unter die jahrelange Auseinandersetzung mit der Vorratsdatenspeicherung gezogen. Die Richter befanden die bisherige deutsche Regelung für rechtswidrig. Schulen und Kitas stöhnen unter Personalmangel und schlechter Ausstattung, Bildungsstudien geben Deutschland schlechte Noten: Die geplanten Sparmaßnahmen im Bildungshaushalt stoßen auf Unverständnis. Die deutsche Wirtschaft schwächelt, Experten und Wirtschaftsinstitute rechnen mit einer neuen Rezession. Die Gründe sehen sie im Ausland - aber die meisten in Deutschland selbst. In den Hochwassergebieten in Griechenland hat die Feuerwehr Hunderte Menschen aus den Wassermassen gerettet. Doch viele Dörfer sind nach den schweren Unwettern nach wie vor von der Außenwelt abgeschnitten. Nun wird auch das Militär eingesetzt. \ No newline at end of file
diff --git a/data/own/marvin_rede.txt b/data/own/marvin_rede.txt
new file mode 100644
index 0000000..19839db
--- /dev/null
+++ b/data/own/marvin_rede.txt
@@ -0,0 +1 @@
+Folgender Text wurde von ChatGPT generiert. Guten Tag liebe Zuhörerinnen und Zuhörer, ich freue mich, Ihnen heute über unser aufregendes Universitätsprojekt zu berichten. Unser Team, bestehend aus Silja, Phillip, Valentin und mir, hat hart daran gearbeitet, ein fortschrittliches Speech-to-Text-Modell zu entwickeln. Silja brachte ihre Expertise in der Datenverarbeitung ein, während Phillip seine Fähigkeiten im Bereich der maschinellen Lernmethoden einsetzte. Valentin steuerte seine Kenntnisse in der Signalverarbeitung bei, und ich konzentrierte mich auf die Modellintegration und Optimierung. Wir alle sind begeistert von den Fortschritten, die wir gemacht haben. Unser Modell zeigt vielversprechende Ergebnisse, insbesondere in Bezug auf die Genauigkeit der Spracherkennung. Natürlich gibt es noch Herausforderungen, an denen wir arbeiten müssen, um das Modell noch präziser und robuster zu machen. Ein großer Dank gebührt auch Peter, der sich um Recherchen und Archivierung kümmert. Peters Arbeit war entscheidend, um unser Verständnis für bestehende Ansätze auf dem Gebiet zu vertiefen und eine solide Grundlage für unsere eigene Entwicklung zu schaffen. In den kommenden Wochen werden wir intensiv daran arbeiten, das Modell weiter zu verfeinern und seine Leistung zu optimieren. Wir sind zuversichtlich, dass unser Speech-to-Text-Modell in vielen Anwendungsbereichen nützlich sein kann, sei es bei der Transkription von Vorlesungen, der Erstellung von Untertiteln oder in der Sprachanalyse-Forschung. Vielen Dank, dass Sie sich die Zeit genommen haben, uns zuzuhören. Wir sind gespannt auf Ihr Feedback und Ihre Fragen. \ No newline at end of file
diff --git a/data/own/valentins_diss_gegen_marvin.txt b/data/own/valentins_diss_gegen_marvin.txt
new file mode 100644
index 0000000..e8d639d
--- /dev/null
+++ b/data/own/valentins_diss_gegen_marvin.txt
@@ -0,0 +1 @@
+Marvin, ich wusste nicht, dass Linux-User so viel Zeit für Oberflächlichkeiten haben. Ich meine du trägst Shirts die so klein sind, das sie fast wie terminal-fenster aussehen. Aber keine Sorge, linux hat ja auch eine menge Anpassungsmöglichkeiten. Vielleicht könntest du da etwas mehr Zeit darauf verwenden die richtige größe für deine shirts zu finden anstatt über mein Aussehen zu urteilen. schließlich sind wir alle nur menschen und am ende des tages ist es unser character der zählt, nicht unsere kleidung oder betriebsystem \ No newline at end of file
diff --git a/readme.md b/readme.md
index 100453d..6c4b9ba 100644
--- a/readme.md
+++ b/readme.md
@@ -54,6 +54,13 @@ We include a pre-trained character-level tokenizer for the german language in th
If the path to the tokenizer you specified in the `config.yaml` file does not exist or is None (~), a new tokenizer will be trained on the training data.
+## Decoder :
+There are two options for the decoder:
+- greedy
+- beam search with language model
+
+The language model is a KenLM model and supplied by the multi-lingual librispeech dataset. If you want to use a different KenLM language model, you can specify the path to the language model in the `config.yaml` file.
+
## Training the model
All hyperparameters can be configured in the `config.yaml` file. The main sections are:
@@ -80,10 +87,7 @@ To run inference on a single audio file, run:
poetry run recognize \
--config_path="PATH_TO_CONFIG_FILE" \
- --file_path="PATH_TO_AUDIO_FILE"
+ --file_path="PATH_TO_AUDIO_FILE" \
+ --target_path="PATH_TO_TARGET_FILE"
-##Changing the decoder :
-We give you the option of decoding the emissions with a greedy decoder or a CTC decoder that is supported by a KEN-LM
-
- to switch go into the config.yaml and change the constant to the fitting option
-
+Target path is optional. If not specified, the recognized text will be printed to the console. Otherwise, a wer will be computed. \ No newline at end of file
diff --git a/swr2_asr/inference.py b/swr2_asr/inference.py
index 64a6eeb..511aef1 100644
--- a/swr2_asr/inference.py
+++ b/swr2_asr/inference.py
@@ -1,4 +1,6 @@
"""Training script for the ASR model."""
+from typing import Union
+
import click
import torch
import torch.nn.functional as F
@@ -7,6 +9,7 @@ import yaml
from swr2_asr.model_deep_speech import SpeechRecognitionModel
from swr2_asr.utils.decoder import decoder_factory
+from swr2_asr.utils.loss_scores import wer
from swr2_asr.utils.tokenizer import CharTokenizer
@@ -22,7 +25,12 @@ from swr2_asr.utils.tokenizer import CharTokenizer
help="Path to audio file",
type=click.Path(exists=True),
)
-def main(config_path: str, file_path: str) -> None:
+# optional arguments
+@click.option(
+ "--target_path",
+ help="Path to target text file",
+)
+def main(config_path: str, file_path: str, target_path: Union[str, None] = None) -> None:
"""inference function."""
with open(config_path, "r", encoding="utf-8") as yaml_file:
config_dict = yaml.safe_load(yaml_file)
@@ -89,7 +97,26 @@ def main(config_path: str, file_path: str) -> None:
preds = decoder(output)
preds = " ".join(preds[0][0].words).strip()
- print(preds)
+ if target_path is not None:
+ with open(target_path, "r", encoding="utf-8") as target_file:
+ target = target_file.read()
+ target = target.lower()
+ target = target.replace("«", "")
+ target = target.replace("»", "")
+ target = target.replace(",", "")
+ target = target.replace(".", "")
+ target = target.replace("?", "")
+ target = target.replace("!", "")
+
+ print("---------")
+ print(f"Prediction:\n\{preds}")
+ print("---------")
+ print(f"Target:\n{target}")
+ print("---------")
+ print(f"WER: {wer(preds, target)}")
+
+ else:
+ print(f"Prediction:\n{preds}")
if __name__ == "__main__":