Die Dateien aus dem Unterricht für die Audio-
Spracherkennung mit Neuronalen Netzen:
MFCC-Jupyternotebooks
Die Dateien aus dem Unterricht für die Audio-
Spracherkennung mit Neuronalen Netzen:
MFCC-Jupyternotebooks
Unterrichtsidee für den Unterricht
Erprobt im Hector-Unterricht Kurs ‚ML für Mikrocontroller‘ und Inf-AG.
1. Bitmap erstellen
Klicke auf die schwarze Fläche und erstelle ein Bitmap
in Form einer 1D-Liste. Diese kann in die Zwischenablage
kopiert werden.
2. Jupyter-Notebook für Bitmaps aus 1D-Arrays
Aus den obigen Bitmaps mit numpy und OpenCV
einfach Bitmaps erstellen:
https://iludis.de/bitmapMaker/Simple_Bitmaps.ipynb
3. Grayscale-Bitmap im MNIST-Format erstellen.
Erstelle ein 255-Graustufen-Bild mit 28×28 Pixeln,
exportiere dessen Werte per Knopfdruck in die
Zwischenablage und füge sie ins Conv2D-Applet ein:
4. Optimale Convolution-Kernel entwickeln.
Wie in einem CNN: Teste verschiedene Convolution
Kernel aus, berechne ein MaxPooling(2,2) und finde
heraus, welche Pixelmuster man so bestimmen kann.

Autoencoder-Downloaddateien
Bitte bis kommenden Montag an mich zurück:
Ueb_Inf4St_KW12_Do19Maerz_Loesun
0. Schaut euch diese Aufgaben an, sie ähneln denjenigen auf SoloLearn:
https://www.w3schools.com/java/java_exercises.asp
DrawIO, haben wir auch für die ER-Diagramme verwendet, kann Class-Diagramme:
https://app.diagrams.net/
oder per Modelio, wie im Unterricht:
https://www.modelio.org/downloads/download-modelio.html
Zum Ausprobieren, ob die IDE funktioniert, wie sie soll, hier ein kleines Klassensystem
aus drei Klassen, erstellt in Repl.it:
class Main {
private subclass[] subclassarray = new subclass[10];
public static void main(String[] args) {
System.out.println("Ein Array von Subklassen");
subclassholder SuClHo = new subclassholder(10);
}
}
public class subclass{
private int parameter;
public subclass(int x){
System.out.println("Parameter: " + x);
this.parameter = x;
}
public int getParameter(){
return this.parameter;
}
public void setParameter(int y){
this.parameter = y;
}
}
public class subclassholder{
private subclass[] subclassarray;
public subclassholder(int anzahl){
subclassarray = new subclass[anzahl];
for(int i=0; i<anzahl; i++){
subclassarray[i] = new subclass(i*10);
}
}
}
Zusatzaufgabe: Was macht dieser Code und wieso? 😉
L(PDA) = {anbn | n>0}

class Stack:
def __init__(self):
self.stackliste = []
self.stacklistenlaenge = 0
def pop(self):
if self.istLeer() == False:
self.stacklistenlaenge = self.stacklistenlaenge - 1
return self.stackliste.pop()
def peek(self):
if self.istLeer() == False:
return self.stackliste[self.stacklistenlaenge - 1]
def push(self, inhalt):
self.stackliste.append(inhalt)
self.stacklistenlaenge = self.stacklistenlaenge + 1
def getStacklistenlaenge(self):
return self.stacklistenlaenge
def istLeer(self):
if self.stacklistenlaenge <= 0:
return True
else:
return False
#---------------------------------------------------
def Zustandsuebergangsfunktion(symbol):
global state
if state == "q0":
if symbol == "a":
state = "q1"
pdaStack.pop()
pdaStack.push("Z")
pdaStack.push("P")
return True
else:
return False
if state == "q1":
if symbol == "a":
pdaStack.pop()
pdaStack.push("P")
pdaStack.push("P")
state = "q1"
return True
elif symbol == "b":
pdaStack.pop()
state = "q2"
return True
else:
return False
if state == "q2":
if symbol == "b":
if pdaStack.peek() == "P":
state = "q2"
pdaStack.pop()
if pdaStack.peek() == "Z":
state = "q3"
return True
else:
return False
if state == "q3":
if pdaStack.peek() == "Z":
pdaStack.pop()
return True
else:
return False
#---------------------------------------------------
def Akzeptor(wort):
global state
for i in range(len(wort)):
testsymbol = wort[i]
aktzustand = Zustandsuebergangsfunktion(testsymbol)
print("Zustand: ", state, "\tAktueller Stack: ", pdaStack.stackliste)
if aktzustand == False:
return False
if pdaStack.peek() == "Z" and state == "q3":
return True
else:
return False
#---------------------------------------------------
pdaStack = Stack()
pdaStack.push("Z")
state = "q0"
print("Startzustand:", state, "\tLeerzustand Stack:", pdaStack.stackliste)
ergebnis = Akzeptor("aaaaabbbbb")
print("---------\nAkzeptiert?", ergebnis)
L(DEA) ={(ha)n! | n>0)

state = "q0"
def Zustandsuebergangsfunktion(symbol):
global state
if state == "q0":
if symbol=="h":
state = "q1"
return True
else:
return False
if state == "q1":
if symbol=="a":
state = "q2"
return True
else:
return False
if state == "q2":
if symbol=="!":
state = "q3"
return True
elif symbol =="h":
state = "q1"
return True
else:
return False
if state == "q3":
return False
def Akzeptor(wort):
global state
for i in range(len(wort)):
testsymbol = wort[i]
aktzustand = Zustandsuebergangsfunktion(testsymbol)
if aktzustand == False:
print("war nix")
return False
if state == "q3":
print("stimmt!")
return True
ergebnis = Akzeptor("hahahaha!")
print(ergebnis)