Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss17:gesang_notieren

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss17:gesang_notieren [2017/09/05 19:37]
kitesurf_m8s [Transformation zum Spektrogramm]
ss17:gesang_notieren [2017/09/05 19:55] (aktuell)
kitesurf_m8s [Komplexe Analyse]
Zeile 118: Zeile 118:
 Da hier die Phase nicht so wichtig ist wie der Betrag von $Y$ wird der Betrag genommen um $Y_{\text{abs}}=\sqrt{Y\cdot\bar{Y}}$ zu erhalten. Da hier die Phase nicht so wichtig ist wie der Betrag von $Y$ wird der Betrag genommen um $Y_{\text{abs}}=\sqrt{Y\cdot\bar{Y}}$ zu erhalten.
 Die grafische Visualisierung heißt Spektrogramm. In Abbildung \ref{spektrum} ist solch eins dargestellt. Die grafische Visualisierung heißt Spektrogramm. In Abbildung \ref{spektrum} ist solch eins dargestellt.
-\begin{figure}[h] + 
- \centering +{{:ss17:spektrum.png|}}
- \includegraphics[width=0.9\textwidth]{Abb/​spektroramm.pdf} +
- \caption[Spektrogramm]{Spektrogramm eines Testsamples mit 4 Klaviertönen und künstlicher Verunreinigung und eingezeichneten Maximums, [eigene Abbildung]} +
- \label{spektrum} +
-\end{figure}+
  
 ==== Ermittlung potentieller Fundamentalfrequenzen ==== ==== Ermittlung potentieller Fundamentalfrequenzen ====
Zeile 151: Zeile 147:
 \end{align*} \end{align*}
 In dieser Form werden lokale Maxima gesucht und die $p$ größten gespeichert. $Y_C$ kann als Farbplot gezeichnet werden. Die zugehörigen Amplituden zu den Maxima werden in Abbildung \ref{convthat} In dieser Form werden lokale Maxima gesucht und die $p$ größten gespeichert. $Y_C$ kann als Farbplot gezeichnet werden. Die zugehörigen Amplituden zu den Maxima werden in Abbildung \ref{convthat}
-\begin{figure}[h] + 
- \centering +{{:ss17:ploty.pdf|}} 
- \includegraphics[width=0.9\textwidth]{Abb/ploty.pdf} +
- \label{convthat+
- \caption[$Y_C$ als Farbplot]{$Y_C$ als Farbplot im oberen Diagramm mit $p=3$ Maxima und die dazugehörigen Tonstärken im unteren Diagramm. Schwarz: Noise-Linie} +
-\end{figure}+
  
 Die Maxima werden in \texttt{pitchc},​ die Frequenz des Maximums, in \texttt{ampli},​ die Lautstärke des gesamten Tones (mit Obertönen),​ und \texttt{index},​ der zur Frequenz zugehörigen Indexes, abgespeichert. Diese haben jeweils die Dimension $p\times m$. Dabei ist $p$ die Anzahl der größten lokalen Maxima in in Frequenzrichtung.\\ Die Maxima werden in \texttt{pitchc},​ die Frequenz des Maximums, in \texttt{ampli},​ die Lautstärke des gesamten Tones (mit Obertönen),​ und \texttt{index},​ der zur Frequenz zugehörigen Indexes, abgespeichert. Diese haben jeweils die Dimension $p\times m$. Dabei ist $p$ die Anzahl der größten lokalen Maxima in in Frequenzrichtung.\\
Zeile 228: Zeile 221:
 ==== Genauigkeit ==== ==== Genauigkeit ====
 Der in Abschnitt \ref{loesung} abgezeichnete Algorithmus,​ lässt viele frei wählbare Parameter offen. Dabei werden die wichtigsten hier aufgelistet. Der in Abschnitt \ref{loesung} abgezeichnete Algorithmus,​ lässt viele frei wählbare Parameter offen. Dabei werden die wichtigsten hier aufgelistet.
-\begin{itemize} + 
- \item p - Anzahl der untersuchten potentiellen Grundtönen +  ​* ​p - Anzahl der untersuchten potentiellen Grundtönen 
- \item Die Anzahl der gegebenen Beispiel-Obertonverteilungen + 
- \item Kern für die Quasi-Faltung um $Y_c$ zu bestimmen +  * Die Anzahl der gegebenen Beispiel-Obertonverteilungen 
- \item Kern für die Glättung vom Spektrogramm in Zeitachse, in Frequenzachse,​ Tonstärke, und Tonfrequenz + 
-\end{itemize}+  * Kern für die Quasi-Faltung um $Y_c$ zu bestimmen 
 +  
 +  * Kern für die Glättung vom Spektrogramm in Zeitachse, in Frequenzachse,​ Tonstärke, und Tonfrequenz 
 Das variieren dieser Parameter kann die Genauigkeit erhöhen. Allerdings gibt es keine allgemeine optimale Lösung und ist vom Anwendungsfall abhängig. Das variieren dieser Parameter kann die Genauigkeit erhöhen. Allerdings gibt es keine allgemeine optimale Lösung und ist vom Anwendungsfall abhängig.
 \paragraph{Beispiel}Wird $p$ erhöht, so ist zwar die Chance geringer dass ein Grundton übersehen wird, aber es gibt auch eine wesentlich höhere Chance dass Overfitting entsteht (siehe \ref{overfit}).\\ \paragraph{Beispiel}Wird $p$ erhöht, so ist zwar die Chance geringer dass ein Grundton übersehen wird, aber es gibt auch eine wesentlich höhere Chance dass Overfitting entsteht (siehe \ref{overfit}).\\
Zeile 245: Zeile 241:
 ==== Komplexe Analyse ==== ==== Komplexe Analyse ====
 Als Lösung, für Obertöne, welche sich gegenseitig auslöschen,​ soll nicht nur der Absolutbetrag der Fourier-Transformation sondert auch die Phase miteinbezogen werden. Somit soll es dem Algorithmus ermöglicht werden, sich auslöschende Obertöne zu erkennen. Der Gedanke ist keine Information zu verwerfen. Als Lösung, für Obertöne, welche sich gegenseitig auslöschen,​ soll nicht nur der Absolutbetrag der Fourier-Transformation sondert auch die Phase miteinbezogen werden. Somit soll es dem Algorithmus ermöglicht werden, sich auslöschende Obertöne zu erkennen. Der Gedanke ist keine Information zu verwerfen.
-\subsection{Performance}+==== Performance ​====
 Die Laufzeit des Algorithmus ist von $\mathcal{O}(\tilde{m})$,​ da die die Sections immer die gleiche Länge haben und der Algorithmus jede Section einzeln auswertet. Eine Faltung mit konstanten Kern ist auch von $\mathcal{O}(\tilde{m})$. Es gibt nun drei offensichtliche Möglichkeiten den Algorithmus zu optimieren. Die Laufzeit des Algorithmus ist von $\mathcal{O}(\tilde{m})$,​ da die die Sections immer die gleiche Länge haben und der Algorithmus jede Section einzeln auswertet. Eine Faltung mit konstanten Kern ist auch von $\mathcal{O}(\tilde{m})$. Es gibt nun drei offensichtliche Möglichkeiten den Algorithmus zu optimieren.
-\begin{itemize} + 
- \item Multithreading+ Multithreading
   
  Da der Algorithmus nicht viel Arbeitsspeicher verbraucht, und sehr viele Sections einzeln unabhängig voneinander berechnet, ist er sehr parallelisierbar. Dies ist ideal für mehrkernige Prozessoren wie Grafikkarten oder Multicore-CPUs. Solange es mehr Kerne als Sections gibt hat der Algorithmus somit sogar eine Ordnung von $\mathcal{O}(1)$.  Da der Algorithmus nicht viel Arbeitsspeicher verbraucht, und sehr viele Sections einzeln unabhängig voneinander berechnet, ist er sehr parallelisierbar. Dies ist ideal für mehrkernige Prozessoren wie Grafikkarten oder Multicore-CPUs. Solange es mehr Kerne als Sections gibt hat der Algorithmus somit sogar eine Ordnung von $\mathcal{O}(1)$.
- \item Portierung zu einer schnelleren Programmiersprache+ Portierung zu einer schnelleren Programmiersprache
   
  Da um viele schleifen nicht drum herum gekommen wird sollte Cython oder eine richtige C-Implementierung benutzt werden.  Da um viele schleifen nicht drum herum gekommen wird sollte Cython oder eine richtige C-Implementierung benutzt werden.
- \item Code-Optimierung+ Code-Optimierung
   
  Der Code kann an vielen Stellen noch verbessert werden um bessere Leistung zu erzielen, da es vorerst um die Genauigkeit des Algorithmus ging.  Der Code kann an vielen Stellen noch verbessert werden um bessere Leistung zu erzielen, da es vorerst um die Genauigkeit des Algorithmus ging.
-\end{itemize} 
- 
 ===== Auswertung ===== ===== Auswertung =====
 Das Projekt ist noch nnicht fertig, aber jetzt schon ein erfolg. Die Polyphone Notenfindung ist ein relativ schweres Problem und funktioniert schon im Ansatz. Das Projekt selber hat ein breites Spektrum an mathematischen Wissen und musikalischen Grundlagen abgefragt. Wie in den meisten Projekten ist der Arbeitsaufwand im Vorhinein schwer abschätzbar und somit ist auch dieses Projekt durch die schlechte Planung nicht rechtzeitig fertig geworden. Das Projekt ist noch nnicht fertig, aber jetzt schon ein erfolg. Die Polyphone Notenfindung ist ein relativ schweres Problem und funktioniert schon im Ansatz. Das Projekt selber hat ein breites Spektrum an mathematischen Wissen und musikalischen Grundlagen abgefragt. Wie in den meisten Projekten ist der Arbeitsaufwand im Vorhinein schwer abschätzbar und somit ist auch dieses Projekt durch die schlechte Planung nicht rechtzeitig fertig geworden.
  
ss17/gesang_notieren.1504633067.txt.gz · Zuletzt geändert: 2017/09/05 19:37 von kitesurf_m8s