test_rtf.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. nj=32
  2. stage=0
  3. scp="/nfs/haoneng.lhn/funasr_data/aishell-1/data/test/wav.scp"
  4. export_root="/nfs/zhifu.gzf/export"
  5. split_scps_tool=split_scp.pl
  6. rtf_tool=test_rtf.py
  7. #:<<!
  8. model_name="damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
  9. backend="onnx" # "torch"
  10. quantize='True' # 'False'
  11. tag=${model_name}/${backend}_${quantize}
  12. !
  13. logs_outputs_dir=${export_root}/logs/${tag}/split$nj
  14. mkdir -p ${logs_outputs_dir}
  15. echo ${logs_outputs_dir}
  16. if [ $stage == 0 ];then
  17. if [ $quantize == 'True' ];then
  18. python -m funasr.export.export_model --model-name ${model_name} --export-dir ${export_root} --type ${backend} --quantize --audio_in ${scp}
  19. else
  20. python -m funasr.export.export_model --model-name ${model_name} --export-dir ${export_root} --type ${backend}
  21. fi
  22. fi
  23. if [ $stage -ge 1 ];then
  24. model_dir=${export_root}/${model_name}
  25. split_scps=""
  26. for JOB in $(seq ${nj}); do
  27. split_scps="$split_scps $logs_outputs_dir/wav.$JOB.scp"
  28. done
  29. perl ${split_scps_tool} $scp ${split_scps}
  30. for JOB in $(seq ${nj}); do
  31. {
  32. core_id=`expr $JOB - 1`
  33. taskset -c ${core_id} python ${rtf_tool} --backend ${backend} --model_dir ${model_dir} --wav_file ${logs_outputs_dir}/wav.$JOB.scp --quantize ${quantize} &> ${logs_outputs_dir}/log.$JOB.txt
  34. }&
  35. done
  36. wait
  37. rm -rf ${logs_outputs_dir}/total_time_comput.txt
  38. rm -rf ${logs_outputs_dir}/total_time_wav.txt
  39. rm -rf ${logs_outputs_dir}/total_rtf.txt
  40. for JOB in $(seq ${nj}); do
  41. {
  42. cat ${logs_outputs_dir}/log.$JOB.txt | grep "total_time_comput" | awk -F ' ' '{print $2}' >> ${logs_outputs_dir}/total_time_comput.txt
  43. cat ${logs_outputs_dir}/log.$JOB.txt | grep "total_time_wav" | awk -F ' ' '{print $2}' >> ${logs_outputs_dir}/total_time_wav.txt
  44. cat ${logs_outputs_dir}/log.$JOB.txt | grep "total_rtf" | awk -F ' ' '{print $2}' >> ${logs_outputs_dir}/total_rtf.txt
  45. }
  46. done
  47. total_time_comput=`cat ${logs_outputs_dir}/total_time_comput.txt | awk 'BEGIN {max = 0} {if ($1+0>max+0) max=$1 fi} END {print max}'`
  48. total_time_wav=`cat ${logs_outputs_dir}/total_time_wav.txt | awk '{sum +=$1};END {print sum}'`
  49. rtf=`awk 'BEGIN{printf "%.5f\n",'$total_time_comput'/'$total_time_wav'}'`
  50. speed=`awk 'BEGIN{printf "%.2f\n",1/'$rtf'}'`
  51. echo "total_time_comput_ms: $total_time_comput"
  52. echo "total_time_wav: $total_time_wav"
  53. echo "total_rtf: $rtf, speech: $speed"
  54. fi