hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
 
WAVS_PATH=$1
ERR_CNT=0
 
PREFIX_LOG="/tmp/check_logs"
TMP_STAT_LOG="tmp_stat.log"
TMP_STATS_LOG="tmp_stats.log"
STAT_LOG="stat.log"
STATS_LOG="stats.log"
RESULT_LOG="result.log"
 
echo "WAVS_PATH: $WAVS_PATH"
 
check_prepare()
{
   if [ -n "$PREFIX_LOG" ]; then
       TMP_STAT_LOG="$PREFIX_LOG/$TMP_STAT_LOG"
       TMP_STATS_LOG="$PREFIX_LOG/$TMP_STATS_LOG"
       STAT_LOG="$PREFIX_LOG/$STAT_LOG"
       STATS_LOG="$PREFIX_LOG/$STATS_LOG"
       RESULT_LOG="$PREFIX_LOG/$RESULT_LOG"
 
       mkdir -p $PREFIX_LOG
   else
       echo "PREFIX_LOG is empty"
   fi
 
   rm $TMP_STAT_LOG -f
   rm $TMP_STATS_LOG -f
   rm $STAT_LOG -f
   rm $STATS_LOG -f
 
   echo "there is no error on test loopback" > $RESULT_LOG
}
 
# There is don't need to add function keyword on busybox shell
check_wav()
{
   wav=$1
   threshold_db=-15
 
   echo "will check wav: $wav with threshold_db: $threshold_db"
 
   sox $wav -n stat 2> $TMP_STAT_LOG
   sox $wav -n stats 2> $TMP_STATS_LOG
 
   echo "======== $wav stat info: ========" >> $STAT_LOG
   cat $TMP_STAT_LOG >> $STAT_LOG
   echo >> $STAT_LOG
 
   echo "======== $wav stats info: ========" >> $STATS_LOG
   cat $TMP_STATS_LOG >> $STATS_LOG
   echo >> $STATS_LOG
 
   l_pk=`awk 'NR==5{ printf "%.2f", $5 }' $TMP_STATS_LOG`
   r_pk=`awk 'NR==5{ printf "%.2f", $6 }' $TMP_STATS_LOG`
   echo "l_pk: $l_pk, r_pk: $r_pk"
 
   last_err=$ERR_CNT
   ERR_CNT=$(echo $l_pk $threshold_db $ERR_CNT | awk '{
       if ($1 > $2) {
           $3+=1;
       }
   } END {
       printf "%d", $3;
   }')
 
   if [ $last_err != $ERR_CNT ]; then
       echo "ERROR! $wav Left Pk lev dB: $l_pk > $threshold_db" >> $RESULT_LOG
   else
       echo "OK! $wav Left Pk lev dB: $l_pk < $threshold_db" >> $RESULT_LOG
   fi
 
   last_err=$ERR_CNT
   ERR_CNT=$(echo $r_pk $threshold_db $ERR_CNT | awk '{
       if ($1 > $2) {
           $3+=1;
       }
   } END {
       printf "%d", $3;
   }')
 
   if [ $last_err != $ERR_CNT ]; then
       echo "ERROR! $wav Right Pk lev dB: $r_pk > $threshold_db" >> $RESULT_LOG
   else
       echo "OK! $wav Right Pk lev dB: $r_pk < $threshold_db" >> $RESULT_LOG
   fi
 
   echo "total ERR_CNT: $ERR_CNT"
 
   #cat $TMP_STATS_LOG | while read line
   #do
       # echo "line: $line"
   #    label=`echo $line | awk '{ print $1 }'`
   #    echo "label: $label"
   #done
}
 
check_start()
{
   cd $WAVS_PATH
 
   check_prepare
 
   for file in `ls $WAVS_PATH`
   do
       if [ -f $file ]; then
           # echo "found file: $file"
 
           suffix=$(echo "$file" | cut -d . -f2)
           # echo "found suffix: $suffix"
 
           if [ $suffix == "wav" ]; then
               # echo "found wav file: $file"
               check_wav $file
           fi
       fi
   done
}
 
check_start