From 3d9443facfb06de1ee7efaecf876ff225e2fd5c1 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Mon, 20 Nov 2023 08:33:17 +1030 Subject: [PATCH] building up encoder block diagram --- doc/codec2.pdf | Bin 139875 -> 140472 bytes doc/codec2.tex | 39 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/doc/codec2.pdf b/doc/codec2.pdf index b2ad5b312ae0de3d858e76cf1b24af016909e8d0..c8332bf7bbc91d15573eeb8fcfee67a0333d280e 100644 GIT binary patch delta 27992 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
    TPHwr;x;Jz9RkML;)|v{y>N-b~-8yrAom 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 delta 27359 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 diff --git a/doc/codec2.tex b/doc/codec2.tex index 4d2c2ac..d60d557 100644 --- a/doc/codec2.tex +++ b/doc/codec2.tex @@ -2,7 +2,7 @@ \usepackage{amsmath} \usepackage{hyperref} \usepackage{tikz} -\usetikzlibrary{calc,arrows} +\usetikzlibrary{calc,arrows,shapes,positioning} \usepackage{float} \usepackage{xstring} @@ -22,6 +22,19 @@ \author{David Rowe\\ \\ Revision: {\gitrevision} on branch: {\branch}} \begin{document} + +% Tikz code used to support block diagrams +% credit: https://tex.stackexchange.com/questions/175969/block-diagrams-using-tikz + +\tikzset{ +block/.style = {draw, fill=white, rectangle, minimum height=3em, minimum width=3em}, +tmp/.style = {coordinate}, +sum/.style= {draw, fill=white, circle, node distance=1cm}, +input/.style = {coordinate}, +output/.style= {coordinate}, +pinstyle/.style = {pin edge={to-,thin,black}} +} + \maketitle \section{Introduction} @@ -117,11 +130,31 @@ The parameters of the sinusoidal model are: \begin{enumerate} \item Frequencies of each sine wave. As they are all harmonics of $F_0$ we can just send $F_0$ to the decoder, and it can reconstruct the frequency of each harmonic as $F_0,2F_0,3F_0,...,LF_0$. We used 5-7 bits/frame to represent the $F_0$ in Codec 2. \item The spectral magnitudes, $A_1,A_2,...,A_L$. These are really important as they convey the information the ear needs to make the speech intelligible. Most of the bits are used for spectral magnitude information. Codec 2 uses between 20 and 36 bits/frame for spectral amplitude information. -\item A voicing model. Speech can be approximated into voiced speech (vowels) and unvoiced speech (like consonants), or some mixture of the two. The example in Figure \ref{fig:hts2a_time} above is for voiced speech. So we need some way to tell the decoder if the speech is voiced or unvoiced, this requires just a few bits/frame. +\item A voicing model. Speech can be approximated into voiced speech (vowels) and unvoiced speech (like consonants), or some mixture of the two. The example in Figure \ref{fig:hts2a_time} above is for voiced speech. So we need some way to describe voicing to the decoder. This requires just a few bits/frame. \end{enumerate} \subsection{Codec 2 Block Diagram} +\begin{figure}[h] +\caption{Codec 2 Encoder.} +\label{fig:codec2_encoder} +\begin{center} +\begin{tikzpicture}[auto, node distance=2cm,>=triangle 45,x=1.0cm,y=1.0cm] + +\node [input] (rinput) {}; +\node [input, right of=rinput,node distance=1cm] (z) {}; +\node [block, right of=z,node distance=2cm] (pitch_est) {Pitch Estimator}; +\node [block, below of=pitch_est] (fft) {FFT}; +\node [block, right of=fft,node distance=3cm] (est_Am) {Estimate $A_m$}; + +\draw [->] (rinput) -- node[left,text width=2cm] {Input Speech} (pitch_est); +\draw [->] (z) |- (fft); +\draw [->] (pitch_est) -| (est_Am); +\draw [->] (fft) -- (est_Am); + +\end{tikzpicture} +\end{center} +\end{figure} \subsection{Bit Allocation} @@ -133,7 +166,7 @@ The parameters of the sinusoidal model are: \section{Further Work} \begin{enumerate} -\item Using c2sim to ectract and plot model parameters +\item Using c2sim to extract and plot model parameters \item How to use tools to single step through codec operation \end{enumerate}