Abstract:此文章介绍了如何在威联通TS-464C2上如何部署OPENAI的whisper模型进行语音识别。实现把“语音文件上传到指定目录下,系统自动识别后输出TXT到另到一个目录里”的功能。(我的其实是TS-464C,但是我的CPU是N5105,且可以加内存,跟464C2一样。我加了8G内存,目前是16G。理论上内存只要够用,不挑机器,其他型号应该也可以实现。内存不够用就用小点的模型~~)由于cpu的孱弱,本文选用了Faster-whisper进行识别。确切来说是whisper-ctranslate2项目,想要了解的自己去github翻哈~~我就不介绍了。

优点:免费、识别率高、什么设备都可以用。

缺点:稍慢。


  1. 安装linux docker.

    打开Container Station, 点容器,点右上角浏览,我因为有其他用途,所以安装的LXD的ubuntu系统。其他应该也可以,理论上不受系统影响,看各位喜好。

    先在File station里找个地方新建两个目录,在配置容器的高级设置里挂载这个两个目录,分别用来存放录音文件和识别之后的文本文件。

在威联通TS-464C2上搭建语音识别模型

其他配置无所谓,如果对log记录时间有要求,就在环境变量里加上TZ=Asia/Shanghai,否则会按照格林尼治时间走。

2.安装必要的包。启动完上面的ubuntu docker之后,点最右边的小齿轮,然后点执行进入到系统中。

在威联通TS-464C2上搭建语音识别模型

默认好像没有用户,想建的自己建一个,不想建的可以用root直接搞~

安装包:pip install -U whisper-ctranslate2

如果没有pip,那就装一个:apt install pip.

去下载模型文件:必须是CTranslate2 format的模型,反正我感觉large v3 turbo识别率更好一点,速度也可以接受:https://hf-mirror.com/deepdml/faster-whisper-large-v3-turbo-ct2/tree/main 如果内存不够,或者想快点,可以用base,small,tiny之类的去hf-mirror上下载就行了。然后把模型放到刚刚共享的/shibie目录里,我又给它cp到了/usr/faster_whisper_largev3/里。不弄也行,改我后续的shell文件里执行识别命令的模型目录即可。

3.测试。执行whisper-ctranslate2 /record/test.mp3 --language Chinese --model_directory /usr/faster_whisper_largev3/ --model large-v3-turbo --device cpu --output_format txt --output_dir /shibie/ 解释一下这句命令:我的文件在/record目录下,叫test.mp3;我设定了识别的语音是中文,--language那个不写也行,会自动检测;--model_dirctory是目录地址;--model是你用的模型是什么,比如smallmediumbase需要写清楚;--device 有GPU可以写CUDA,咱这个就乖乖CPU吧;--outpu_format 如果删了这个会默认都输出,srt vtt什么的好几个,有时间戳。我只需要txt就行了,看个人需求设置。--output_dir /shibie 输出到/shibie目录下,可以自行设置。

whisper-ctranslate2 --help可以帮助你详细了解一下这个东西怎么用。如果命令成功了,那继续~

4.自动化执行。每5分钟查一下record目录下是否有新文件,如果有-就识别一下,输出到shibie目录下,并且把原文件挪到/shibie/transed里。

先把上面的需求写成一个shell脚本。放到/shibie/起名叫autolarge.sh

以下是我瞎写的…请大牛们别笑话……

#!/bin/bash

# get date&time.

current_date_time=$(date '+%Y-%m-%d %H:%M:%S')

# check whether new file exists.

if [ -n "$(ls /record)" ]; then

file_name=$(ls /record | head -1)

echo "$file_name">>/shibie/log.txt

file_path="/record/$file_name"

# run the commond!!!

whisper-ctranslate2 "$file_path" --language Chinese --model_directory /usr/faster_whisper_largev3/ --model large-v3-turbo --device cpu --output_format txt --output_dir /shibie/

if [ $? -eq 0 ]; then

mv "$file_path" "/shibie/transed/"

echo "$current_date_time - File has been processed and moved.">> /shibie/log.txt

else

echo "$current_date_time - Erro processing $file_name" >> /shibie/log.txt

fi

else echo "$current_date_time - No new audio file.">> /shibie/log.txt

fi

执行crontab -e,最下面添加一行*/5 * * * * sh /shibie/autolarge.sh

cat /shibie/log.txt看看5分钟后有没有日志生成。

在威联通TS-464C2上搭建语音识别模型

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

,

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。