Skip to content

Commit b519307

Browse files
committed
Added text for Technische Umsetzung and AudioPreprocessor.
1 parent b301d62 commit b519307

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

chapter/Grundlagen.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ \section{Grundlagen}\label{sec:Grundlagen}
22
Der Schwerpunkt dieser Arbeit unterteilt sich in zwei Teile, die Signalvorverarbeitung und das \ac{LPC} Verfahren.
33
Im Folgenden werden die theoretischen Grundlagen für beide Prozesse beschrieben.
44

5-
\subsection{Signalvorverarbeitung}
5+
\subsection{Signalvorverarbeitung}\label{sec:Signalvorverarbeitung}
66
Um ein gegebenes Audiosignal einheitlich verarbeiten zu können, muss dieses zunächst mittels verschiedener Verfahren vorbereitet werden.
77
Ziel dieser Vorverarbeitung ist es, die Effizienz und Effektivität des anschließenden Verarbeitungsprozesses zu erhöhen und somit ein verbessertes Ergebnis zu erzielen \autocite[vgl.][S. 11672]{lokesh_speech_2019}.
88
Die Vorverarbeitung im Rahmen dieser Arbeit beinhaltet die vier Schritte Rauschreduzierung, Pausen entfernen, Framing und Windowing, welche in den folgenden Unterkapiteln genauer erläutert werden.
99

10-
\subsubsection{Rauschreduzierung}
10+
\subsubsection{Rauschreduzierung}\label{sec:Rauschreduzierung}
1111
Um störende Frequenzen aus dem Audiosignal zu entfernen wird eine Rauschreduzierungsfunktion verwendet.
1212
Die in dieser Arbeit verwendete Funktion nutzt den sogenannten Spectral Noise Gate Algorithmus.
1313
Dabei wird zunächst die Signatur des Rauschens ermittelt.

chapter/TechnischeUmsetzung.tex

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,17 @@
1-
\section{Technische Umsetzung}\label{sec:TechnischeUmsetzung}
1+
\section{Technische Umsetzung}\label{sec:TechnischeUmsetzung}
2+
% TODO: Optional: Quellen hinzufügen wenn Platz vorhanden ist.
3+
Da die Zuordnung der erzeugten \ac{LPC} Koeffizienten zu einem spezifischen Sprecher mittels eines \acp{NN} umgesetzt wird, wird auf die Programmiersprache Python zurückgegriffen.
4+
Diese ermöglicht die Verwendung des von Google entwickelten Machine Learning Frameworks TensorFlow.
5+
Folglich findet auch die Implementierung der Signalvorverarbeitung, sowie der \ac{LPC} Berechnung mit Hilfe der Sprache Python statt.
6+
7+
Um Programmierfehler zu vermeiden, sowie die Effizienz des Codes zu erhöhen, werden Funktionen aus verschiedenen Bibliotheken verwendet.
8+
Als Basis wird die Bibliothek \textKlasse{numpy} verwendet, welche Funktionen für die Bearbeitung von Arrays und Matrizen bereitstellt.
9+
10+
\subsection{Klasse AudioPreprocessor}
11+
Die Klasse \textKlasse{AudioPreprocessor} (vgl. Quellcode~\ref{code:AudioPreprocessor}) beinhaltet die Funktionen für die Schritte der Signalvorverarbeitung (vgl. Kapitel~\ref{sec:Signalvorverarbeitung}).
12+
Die Funktion \textFunktion{remove\_noise} implementiert die Rauschreduzierung unter Verwendung der Bibliothek \textKlasse{noisereduce}.
13+
Für die Funktion \textFunktion{remove\_silence} wurde wie bereits erwähnt ein eigener Algorithmus entwickelt (vgl. Zeile~\ref{line:removeSilenceStart}-\ref{line:removeSilenceEnd}), der in Kapitel~\ref{sec:Rauschreduzierung} genauer erläutert ist.
14+
Die Abschließende Unterteilung des Audiosignals in Frames, sowie das Windowing der Frames findet mit Hilfe von \textKlasse{numpy} Operationen in den Funktionen \textFunktion{create\_frames} und \textFunktion{window\_frames} statt.
15+
Die passende Fensterfunktion wird dabei ebenfalls durch die \textKlasse{numpy} Bibliothek bereitgestellt (vgl. Zeile~\ref{line:windowFunction}).
16+
17+
\subsection{Klasse FeatureExtractor}

code/preprocessing/AudioPreprocessor.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,14 @@ def float_to_int(array, type=np.int16, divide_max_abs=True):
5757
return array
5858

5959
@staticmethod
60-
def remove_silence(y):
60+
def remove_noise(y, sr):
61+
# prop_decrease 0.8 only reduces noise by 0.8 -> sound quality is better than at 1.0
62+
y_ = nr.reduce_noise(y=y, sr=sr, prop_decrease=0.8)
63+
64+
return y_
65+
66+
@staticmethod
67+
def remove_silence(y): #(*@\label{line:removeSilenceStart}@*)
6168
threshold = 0.005
6269
pause_length_in_ms = 200
6370
keep_at_start_and_end = 50
@@ -79,14 +86,7 @@ def remove_silence(y):
7986

8087
y_ = np.delete(y, indices_to_remove)
8188

82-
return y_
83-
84-
@staticmethod
85-
def remove_noise(y, sr):
86-
# prop_decrease 0.8 only reduces noise by 0.8 -> sound quality is better than at 1.0
87-
y_ = nr.reduce_noise(y=y, sr=sr, prop_decrease=0.8)
88-
89-
return y_
89+
return y_ #(*@\label{line:removeSilenceEnd}@*)
9090

9191
@staticmethod
9292
def create_frames(y, frame_size, overlap):
@@ -104,7 +104,7 @@ def create_frames(y, frame_size, overlap):
104104
return frames
105105

106106
@staticmethod
107-
def window_frames(frames, window_function=np.hanning):
107+
def window_frames(frames, window_function=np.hanning): #(*@\label{line:windowFunction}@*)
108108
windowed_frames = []
109109

110110
for frame in frames:

pages/anhang.tex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
\begin{appendix}
22
\section{Anhang}
3+
\subsection{AudioPreprocessor}
4+
\lstset{escapeinside={\#(*@}{@*)}}
5+
\lstinputlisting[caption={Signalvorverarbeitung}, captionpos=b, language=Python, label=code:AudioPreprocessor]{code/preprocessing/AudioPreprocessor.py}
36
\end{appendix}

0 commit comments

Comments
 (0)