demo2_tmp.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. file_dir="/nfs/yufan.yf/workspace/github/FunASR/examples/industrial_data_pretraining/lcbnet/exp/speech_lcbnet_contextual_asr-en-16k-bpe-vocab5002-pytorch"
  2. CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7"
  3. inference_device="cuda"
  4. test_set="test_wav"
  5. if [ ${inference_device} == "cuda" ]; then
  6. nj=$(echo $CUDA_VISIBLE_DEVICES | awk -F "," '{print NF}')
  7. else
  8. inference_batch_size=1
  9. CUDA_VISIBLE_DEVICES=""
  10. for JOB in $(seq ${nj}); do
  11. CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES"-1,"
  12. done
  13. fi
  14. inference_dir="outputs/slidespeech_test_beamsearch_wav"
  15. _logdir="${inference_dir}/logdir"
  16. echo "inference_dir: ${inference_dir}"
  17. mkdir -p "${_logdir}"
  18. key_file1=${file_dir}/${test_set}/wav.scp
  19. key_file2=${file_dir}/${test_set}/ocr.txt
  20. split_scps1=
  21. split_scps2=
  22. for JOB in $(seq "${nj}"); do
  23. split_scps1+=" ${_logdir}/wav.${JOB}.scp"
  24. split_scps2+=" ${_logdir}/ocr.${JOB}.txt"
  25. done
  26. utils/split_scp.pl "${key_file1}" ${split_scps1}
  27. utils/split_scp.pl "${key_file2}" ${split_scps2}
  28. gpuid_list_array=(${CUDA_VISIBLE_DEVICES//,/ })
  29. for JOB in $(seq ${nj}); do
  30. {
  31. id=$((JOB-1))
  32. gpuid=${gpuid_list_array[$id]}
  33. export CUDA_VISIBLE_DEVICES=${gpuid}
  34. python -m funasr.bin.inference \
  35. --config-path=${file_dir} \
  36. --config-name="config.yaml" \
  37. ++init_param=${file_dir}/model.pb \
  38. ++tokenizer_conf.token_list=${file_dir}/tokens.txt \
  39. ++input=[${_logdir}/wav.${JOB}.scp,${_logdir}/ocr.${JOB}.txt] \
  40. +data_type='["sound", "text"]' \
  41. ++tokenizer_conf.bpemodel=${file_dir}/bpe.model \
  42. ++output_dir="${inference_dir}/${JOB}" \
  43. ++device="${inference_device}" \
  44. ++ncpu=1 \
  45. ++disable_log=true &> ${_logdir}/log.${JOB}.txt
  46. }&
  47. done
  48. wait
  49. mkdir -p ${inference_dir}/1best_recog
  50. for JOB in $(seq "${nj}"); do
  51. cat "${inference_dir}/${JOB}/1best_recog/token" >> "${inference_dir}/1best_recog/token"
  52. done
  53. echo "Computing WER ..."
  54. sed -e 's/ /\t/' -e 's/ //g' -e 's/▁/ /g' -e 's/\t /\t/' ${inference_dir}/1best_recog/token > ${inference_dir}/1best_recog/token.proc
  55. cp ${file_dir}/${test_set}/text ${inference_dir}/1best_recog/token.ref
  56. cp ${file_dir}/${test_set}/ocr.list ${inference_dir}/1best_recog/ocr.list
  57. python utils/compute_wer.py ${inference_dir}/1best_recog/token.ref ${inference_dir}/1best_recog/token.proc ${inference_dir}/1best_recog/token.cer
  58. tail -n 3 ${inference_dir}/1best_recog/token.cer
  59. ./run_bwer_recall.sh ${inference_dir}/1best_recog/
  60. tail -n 6 ${inference_dir}/1best_recog/BWER-UWER.results |head -n 5