FunASR单条/批量推理脚本

单条推理

#!/bin/bash


if [ -d "results" ]; then
    rm -rf "results"
    echo "文件夹已删除:results"
fi

if [ -e "result.txt" ]; then
    rm "result.txt"
    echo "文件已删除:result.txt"
fi


TEST_CASE="wav"

# wav
if [ "wav" = "${TEST_CASE}" ];then
    echo "=================== Test wav ========================"

    AUDIO_IN="../audio/asr_example.wav"

    # offline, 2pass, online
    time -p python3 funasr_wss_client_queue.py --host "127.0.0.1" --port 10095 \
            --mode offline \
            --thread_num 64 \
            --use_itn 0 \
            --audio_in "$AUDIO_IN" \
            --output_dir "./results" \
            --audio_fs 16000

fi



# pcm 8k 8bit alaw
if [ "pcm" = "${TEST_CASE}" ];then
    echo "=================== Test pcm ========================"

    # TODO set AUDIO_IN
    # set alaw pcm
    AUDIO_IN="..."

    time -p python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 \
            --mode offline \
            --thread_num 64 \
            --use_itn 0 \
            --audio_in $AUDIO_IN \
            --output_dir "./results" \
            --audio_fs 8000

fi


if [ -d "results" ]; then
    # cat results/* > result.txt
    python3 gather_results.py
    echo "结果文件已生成:result.txt"
fi

echo "Fin."

# --host 为FunASR runtime-SDK服务部署机器ip,默认为本机ip(127.0.0.1),如果client与服务不在同一台服务器,需要改为部署机器ip
# --port 10095 部署端口号
# --mode offline表示离线文件转写
# --audio_in 需要进行转写的音频文件,支持文件路径,文件列表wav.scp
# --thread_num 设置并发发送线程数,默认为1
# --ssl 设置是否开启ssl证书校验,默认1开启,设置为0关闭

批量推理

# 批量转写,分条结果保存到"multi_results/源文件夹名"中,音频与"音频名.txt"相对应
# 生成的result.txt和result文件夹是临时中转的,最终移到目的路径
#!/bin/bash

# 创建或确保 results 目录存在
mkdir -p "results"

# 设置测试用例为 wav
TEST_CASE="wav"

# 处理 ../audio/aac1 中的所有音频文件
AUDIO_DIR="../audio/acc1"
AUDIO_SUBDIR=$(basename "$AUDIO_DIR")  # 获取 AUDIO_DIR 的最后一层目录名称
AUDIO_RESULTS_DIR="multi_results/$AUDIO_SUBDIR"  # 结果文件夹路径
mkdir -p "$AUDIO_RESULTS_DIR"  # 创建子目录

for AUDIO_FILE in "$AUDIO_DIR"/*.wav; do
# 删除旧的 results 目录和 result.txt 文件

    if [ -d "results" ]; then
        rm -rf "results"
        echo "文件夹已删除:results"
    fi

    if [ -e "result.txt" ]; then
        rm "result.txt"
        echo "文件已删除:result.txt"
    fi

    if [ -f "$AUDIO_FILE" ]; then
        echo "=================== Processing $AUDIO_FILE ========================"
     
        # CPU/GPU开关
        # export CUDA_VISIBLE_DEVICES=0

        # 使用 funasr_wss_client_queue.py 进行语音识别
        time -p python3 funasr_wss_client_queue.py --host "127.0.0.1" --port 10095 \
                --mode offline \
                --thread_num 64 \
                --use_itn 0 \
                --audio_in "$AUDIO_FILE" \
                --output_dir "./results" \
                --audio_fs 16000 
                
        if [ -d "results" ]; then
            # cat results/* > result.txt
            python3 gather_results.py
            echo "结果文件已生成:result.txt"
        fi

        # 获取文件名(不带路径和扩展名)
        FILENAME=$(basename "$AUDIO_FILE" .wav)

        # 检查识别结果文件是否存在
        if [ -f "result.txt" ]; then
            # 将 result.txt 复制到 AUDIO_RESULTS_DIR 并重命名为 音频名.txt
            cp "result.txt" "$AUDIO_RESULTS_DIR/$FILENAME.txt"
            echo "识别结果已保存至:$AUDIO_RESULTS_DIR/$FILENAME.txt"
        else
            echo "警告:未找到识别结果文件:result.txt"
            echo "检查 funasr_wss_client_queue.py 的输出,确保文件被正确生成。"
        fi
    fi
done

echo "所有结果文件已生成并保存至:$AUDIO_RESULTS_DIR/"
echo "Fin."

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值