whisperX 语音识别本地部署

WhisperX 是一个优秀的开源Python语音识别库。
下面记录Windows10系统下部署Whisper
1、在操作系统中安装 Python环境
2、安装 CUDA环境
3、安装Annaconda或Minconda环境
4、下载安装ffmpeg
下载release-builds包,如下图所示
在这里插入图片描述
将下载的包解压到你想要的路径,然后配置系统环境:我的电脑->高级系统设置->环境变量->Path
在这里插入图片描述
在这里插入图片描述
设置完成后打开cmd窗口输入

ffmpeg

在这里插入图片描述
5、conda环境安装指定位置的虚拟环境

conda create --prefix=D:\Projects\LiimouDemo\WhisperX\Code\whisperX\whisperXVenv python=3.10

6、激活虚拟环境

conda activate D:\Projects\LiimouDemo\WhisperX\Code\whisperX\whisperXVenv

7、安装WhisperX库

pip install git+https://github.com/m-bain/whisperx.git

8、更新WhisperX库

pip install git+https://github.com/m-bain/whisperx.git --upgrade

9、在Python中使用

import whisperx
import time
import zhconv
device = "cuda"
audio_file = "data/test.mp3"
batch_size = 16 # reduce if low on GPU mem
compute_type = "float16" # change to "int8" if low on GPU mem (may reduce accuracy)
# compute_type = "int8" # change to "int8" if low on GPU mem (may reduce accuracy)
print('开始加载模型')
start = time.time()
# 1. Transcribe with original whisper (batched)
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
# model = whisperx.load_model("small", device, compute_type=compute_type)
end = time.time()
print('加载使用的时间:',end-start,'s')
start = time.time()
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=batch_size)

print(result["segments"][0]["text"]) # before alignment
end = time.time()
print('识别使用的时间:',end-start,'s')

封装上述代码,初始化时调用一次loadModel()方法,之后使用就直接调用asr(path)方法

import whisperx
import zhconv
from whisperx.asr import FasterWhisperPipeline
import time

class WhisperXTool:
    device = "cuda"
    audio_file = "data/test.mp3"
    batch_size = 16  # reduce if low on GPU mem
    compute_type = "float16"  # change to "int8" if low on GPU mem (may reduce accuracy)
    # compute_type = "int8" # change to "int8" if low on GPU mem (may reduce accuracy)
    fast_model: FasterWhisperPipeline

    def loadModel(self):
        # 1. Transcribe with original whisper (batched)
        self.fast_model = whisperx.load_model("large-v2", self.device, compute_type=self.compute_type)
        print("模型加载完成")

    def asr(self, filePath: str):
        start = time.time()
        audio = whisperx.load_audio(filePath)
        result = self.fast_model.transcribe(audio, batch_size=self.batch_size)
        s = result["segments"][0]["text"]
        s1 = zhconv.convert(s, 'zh-cn')
        print(s1)
        end = time.time()
        print('识别使用的时间:', end - start, 's')
        return s1

zhconv是中文简体繁体转换的库,安装命令如下

pip install zhconv
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Minio是一种开源的对象存储服务,它具有高度可扩展性和高性能。对于理解Minio的工作原理和实现细节,源码分析是一种很好的方法。 在Minio源码分析中,我们可以关注以下几个关键点: 1. 存储引擎:Minio支持多种存储引擎,如本地磁盘、分布式文件系统等。通过阅读源码,我们可以了解Minio如何抽象存储引擎,并灵活地添加新的存储引擎。 2. 对象存储:Minio使用对象存储模型,将文件分割成对象进行存储。在源码分析中,我们可以深入研究对象存储的细节,包括对象元数据的存储方式、对象ID的生成算法等。 3. 分布式架构:Minio支持分布式架构,可以水平扩展。在源码分析中,我们可以学习Minio如何实现数据分片和复制、负载均衡等分布式特性。 4. 网络通信:Minio使用HTTP协议作为数据传输协议,可以与各种客户端进行通信。源码分析可以帮助我们了解Minio如何处理HTTP请求和响应,以及如何进行身份验证和访问控制。 5. 错误处理和容错机制:Minio具有强大的错误处理和容错机制,包括故障转移、数据修复等。在源码分析中,我们可以学习Minio如何处理各种异常情况,保证数据的可靠性和一致性。 通过对Minio源码的深入分析,我们可以更好地理解Minio的设计思想和实现细节,为使用和开发Minio提供指导和参考。同时,源码分析也是提升自己编码能力和系统设计能力的一种重要方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值