[Tex/LaTex] How to draw an arrow from one block to two blocks with Tikz

tikz-arrowstikz-pgf

I want to draw a diagram like below, but I don't know how to draw an arrow that from one block to two blocks, like the one to source1/source2 and how to draw an arrow from two blocks to one block, like the one from source1/source2. Could someone help me please!
enter image description here

This is what I can do to my best:

\tikzstyle{rect} = [draw, rectangle, minimum height = 4em, text width = 6em, text centered]
\tikzstyle{line} = [draw, -latex']

\begin{figure}
    \begin{center}
        \begin{tikzpicture}[node distance = 3cm, auto]
        \node[rect](signal) {Signal};
        \node[rect, right of=signal](STFT) {STFT};
        \node[rect, right of=STFT](sep) {DNN/RNN};
        \node[rect, right of=sep](speech) {$Source_1$};
        \node[rect, below of=speech](music) {$Source_2$};
        \node[rect, below of=sep](mask) {Time Frequencey Masking};
        \node[rect, left of=mask](ISTFT) {ISTFT};
        \node[rect, left of=ISTFT](eval) {Evaluation};

        \path[line] (signal) -- (STFT);
        \path[line] (STFT) -- (sep);
        \path[line] (sep) -- (speech);
        \path[line] (sep) -- (music);
        \path[line] (mask) -- (ISTFT);
        \path[line] (ISTFT) -- (eval);
        \end{tikzpicture}
    \end{center}
\end{figure}

Best Answer

Something like this:

enter image description here

Code:

\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{arrows, chains, fit, positioning, scopes}

\begin{document}
    \begin{tikzpicture}[
            > = angle 90,
node distance = 6mm and 8mm,
   box/.style = {draw, minimum height=10mm, minimum width=27mm,
                 align=center, join=by ->, on chain}, 
         font = \sffamily
                    ] 
{ [start chain = A going right]
\node[on chain] {Signal};
\node[box]      {STFT/log-mel};
\node[box]      {DNN/RNN};
}
{ [start chain = B going left]
\node[box,below=of A-3]      
                {Time Frequency\\ Masking};
\node[box]      {ISTFT};
\node[box]      {Evaluation};             
} 
\node (s1)  [right=of A-3.north east] {Source\textsubscript{1}};
\node (s2)  [right=of A-3.south east] {Source\textsubscript{2}};
% 
\node[draw, dotted, inner sep = 5mm, xshift=1mm, fit=(A-3) (B-1) (s1)] {};
\draw (A-3.east) -- ++ (4mm,0) coordinate (s0);
\draw[->] (s0)  |- (s1);
\draw[->] (s0)  |- (s2);
\draw[->] (A-3 -| s1.east) -- + (4mm,0) |- (B-1);  
    \end{tikzpicture}
\end{document}

Nodes position is determined by use of library chains and scope. Formed are two chains: A and B. Arrows between nodes in chains are drawn by option join=by -> in box style. Arrows, which connect chain A with nodes "Source_1" and "Source_2" are drawn separately. Syntax |- is used in drawing perpendicular lines.

Edit: I notice a spelling error, which is now corrected. It correction I exploit also for slightly changes drawings (all nodes are now the same size).