## 2 Proposed Scheme
### Hash Code Calculation (Hash Function)  
After recording the audio signal \(S\), the first step in obtaining the hash code consists of resizing the vector \(S\) (input signal), in such a way that the data are structured in an array of 64 columns. The number of rows of this matrix will depend on the number of samples of the original signal, being equal to \(N/64\), where \(N\) is the number of samples of the original signal. In the case \(N\) is not a multiple of 64, the original signal will be completed with zeros until the criterion is met. It should be noted that the vector of the original signal only considers the samples of the signal, that is, it discards the header of the file (44 bytes). In addition, the selection of 64 columns is due to the fact that a smaller number of columns can produce a greater number of repeated characters in the hash code, while the definition of a greater number of columns can cause an unnecessary number of zeros to be added (so that the number of samples is a multiple of the number of columns). Thus, the output of the reshaping block is a \(N/64\times 64\) matrix (\(s^{r}\)), as shown in Equation (2).  
The next step is to calculate the mean of each column in the matrix \(s^{r}\), obtaining a \(1\times 64\) vector (\(s^{m}\)), as shown in Equation (3).  
\[s^{r}=\begin{bmatrix}s\left(1\right)&\cdots&s\left(64\right)\\ \vdots&\ddots&\vdots\\ s\left(n-64\right)&\cdots&s\left(N\right)\end{bmatrix} \tag{2}\]  
\[s^{m}\left(j\right)=\frac{64}{N}\sum_{i=1}^{N/64}s^{r}\left(i,j\right) \tag{3}\]  
Then, the Discrete Fourier Transform (DFT) of the \(s^{r}\) vector is computed through the use of the Fast Fourier Algorithm (FFT). Since the execution time for FFT is faster for powers of two, and considering voice signals with sampling frequency of 8 kHz, 21 was selected as the number of points in FFT, i.e., an 8192-point DFT is used. In addition, since the phase presents a greater variability than the magnitude in the whole spectrum, the argument of the DFT is taken as shown in Equations (4) and (5).  
Figure 1: General outline of the proposed scheme.  
\[\varphi=arg\left(f\left(j\omega\right)\right) \tag{5}\]  
To reduce the size of the data, the vector \(\varphi\) is resized to an array of 128 rows and 64 columns, and then it is converted to a row vector containing the sum of each column. In other words, the total sum of the elements in each column of this matrix is calculated in such a way that a vector \(\varphi^{s}\) of 64 elements is obtained, as shown in Equations (6) and (7).  
\[\varphi^{f}=\left[\begin{array}{ccc}s\left(1\right)&\cdots&s\left(64\right) \\ \vdots&\ddots&\vdots\\ s\left(8128\right)&\cdots&s\left(8192\right)\end{array}\right] \tag{6}\]  
\[\varphi^{s}\left(j\right)=\sum\limits_{i=1}^{128}\left|\varphi^{f}\left(i,j \right)\right| \tag{7}\]  
Finally, to obtain the hash code, the integer and the fractional parts (considering only four significant figures) are taken (Equation (8)). These five digits interpreted as an integer value are converted to hexadecimal, and the least significant digit of each element is concatenated to obtain the 64-hex-digit hash code.  
\[c=hex\left(\left|\varphi^{s}\cdot 10^{4}\right|\right) \tag{8}\]