當前位置: 妍妍網 > 碼農

開源初探 - stt

2024-03-03碼農

介紹說明

這是一個離線執行的本地語音辨識轉文字工具,基於 fast-whipser 開源模型,可將視訊/音訊中的人類聲音辨識並轉為文字,可輸出 json 格式、 srt 字幕帶時間戳格式、純文字格式。可用於替代 openai 的語音辨識介面或百度語音辨識等,準確率基本等同 openai 官方 api 介面。

前置準備

  • 安裝 CUDA

  • 由於要使用 GPU ,所以需要安裝 CUDA ,這裏使用公有雲,可以自動完成安裝

    首次登入,發現正在安裝 C UDA

    完成後,使用 nvidia-smi 檢查:

  • 安裝 NVIDIA Container Toolkit

  • 用於在容器中使用 CUDA

    參考:

    https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listsed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.listsudo apt-get updatesudo apt-get install -y nvidia-container-toolkit

    配置 docker:

    sudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker

    完成後,使用以下指令檢查:

    docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

    安裝執行

    為了方便演示,將使用 docker 的方式來安裝執行 stt

  • 準備 Dockerfile

  • FROM nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04# 安裝 pythonRUN apt-get updateRUN apt-getinstall python3 python3-pip -y# 安裝 gitRUN apt-getinstall git -y# 下載程式碼RUN git clone https://github.com/jianchang512/stt.gitWORKDIR /sttRUN pip install -r requirements.txtRUN pip uninstall -y torchRUN pip install torch --index-url https://download.pytorch.org/whl/cu121# 添加環境變量ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/python3.10/dist-packages/nvidia/cublas/lib:/usr/local/lib/python3.10/dist-packages/nvidia/cudnn/libCMD ["python3""start.py"]

  • 構建 docker 映像

  • 在計畫根目錄或 Dockerfile 所在目錄執行以下指令:

    docker build -t stt:latest -f ./Dockerfile .dockerimages | grep stt

    使用簡介

    映像打好後就可以使用 stt 了。

  • 準備啟動配置檔 set.ini

  • ; after update set , please restart the app; ip:port 監聽地址和埠web_address=0.0.0.0:9977;en or zhlang=; cpu or cuda,使用 cpu 還是 gpu,這裏使用 gpudevtype=cuda; int8 or float32 only gpucuda_com_type=int8;Reducing these two numbers will use less graphics memorybeam_size=1best_of=1;vad set to false,use litter GPU memory,true is morevad=true;0 is use litter GPU,other is moretemperature=0;false is litter GPU,ture is morecondition_on_previous_text=falseinitial_prompt_zh=以下是普通話內容,請轉錄為中文簡體。

  • 下載模型檔

  • 可以在以下地址下載:

    https://github.com/jianchang512/stt/releases/tag/0.0

    這裏使用 large-v3 ,使用以下指令下載並解壓:

    wget https://huggingface.co/spaces/mortimerme/s4/resolve/main/largeV3Model-extract-models-folder-解压到models目录下.7zapt-get install p7zip-full7za x largeV3Model-extract-models-folder-解壓到models目錄下.7z

  • 執行 stt

  • dockerrm -f sttdockerrun --name stt -d \--runtime=nvidia --gpus all \-p 9977:9977 \-v ${PWD}/set.ini:/stt/set.ini \-v ${PWD}/models--Systran--faster-whisper-large-v3:/stt/models/models--Systran--faster-whisper-large-v3 \stt:latestdockerps | grep stt

  • 準備測試檔 test.py

  • import requests# 請求地址url = "http://127.0.0.1:9977/api"# 請求參數 file:音視訊檔,language:語言程式碼,model:模型,response_format:text|json|srt# 返回 code==0 成功,其他失敗,msg==成功為ok,其他失敗原因,data=辨識後返回文字files = {"file": open("/root/test.wav""rb")}data={"language":"zh","model":"large-v3","response_format":"json"}response = requests.request("POST", url, timeout=600data=data,files=files)print(response.json())

  • 準備測試音訊檔

  • 這裏使用的是 wav 檔, mp3 檔也是支持的。

  • 執行轉換

  • pip install requestspython3 test.py

    GPU 使用情況:

    轉換結果 - json:

    轉換結果 - text

    對比了下音訊檔,會有點瑕疵,準確率大概 90% 左右。

    計畫地址

    更多計畫詳細資訊請到計畫主頁獲取

    https://github.com/jianchang512/stt

    快捷映像

    ccr.ccs.tencentyun.com/erik_xu/ stt :latest

    更多快捷映像

    https://zhuanlan.zhihu.com/p/678429467

    寫在最後

    以上就是本文希望分享的內容,大家如果有 問題咨詢、 技術支持、開源推薦等,歡迎在公眾號【跬步之巔】留言交流。