%!TEX program = xelatex
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc} 
\usetikzlibrary{arrows,positioning}
\usepackage{fontspec}
\setmainfont{Charis SIL}
\begin{document}
\tikzstyle{m1} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=blue!10]
\tikzstyle{m4} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=purple!10]
\tikzstyle{m2} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!10]
\tikzstyle{m3} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!10]
\tikzstyle{spoken} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=green!10]
\tikzstyle{textst} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=gray!10,font=\ttfamily]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{tikzpicture}[node distance=0.5cm]
  \node (concept) [spoken] {Spoken Query};
   \node (adc) [m1,below= of concept] {\textbf{Signal Processing (ADC, VAD, Denoise)}};
   \node (m2) [m1,below= of adc] {\textbf{Acoustical Feature Extraction}};
   \node (amodel) [m1,below= of m2] {\textbf{Acoustical Model}};
   \node (ainf) [textst,below= of amodel] {\textbf{Acoustical Predictions}};
\node (hyp) [m1,right= of ainf] {\textbf{Hypothesis Search}};
\draw [arrow] (concept) -- (adc);
\draw [arrow] (adc) -- (m2);
\draw [arrow] (m2) -- (amodel);
\draw [arrow] (amodel) -- (ainf);

    \node (linf) [textst,right= of hyp] {\textbf{Language Model Predictions}};
    \node (langmodel) [m1,above= of linf] {\textbf{Language Model}};
    \node (ml) [m1,above= of langmodel] {\textbf{LIGN 165/167}};
    \node (textcorpus) [spoken, above= of ml] {Text Corpus};
\draw [arrow] (textcorpus) -- (ml);
\draw [arrow] (ml) -- (langmodel);
\draw [arrow] (langmodel) -- (linf);

\node (output) [textst,below= of hyp] {\textbf{Output Text}};
\draw [arrow] (ainf) -- (hyp);
\draw [arrow] (linf) -- (hyp);
\draw [arrow] (hyp) -- (output);
\draw [dashed, ->] (output.north east) to [out=60,in=180] (langmodel.west);

\end{tikzpicture}

\end{document}
