news 2026/4/15 14:41:25

手把手教你使用 Faster-Whisper 实时语音输入转文本,本地部署教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你使用 Faster-Whisper 实时语音输入转文本,本地部署教程

文章目录

  • 前言
  • 一、安装环境
  • 二、使用步骤
    • 1.下载模型
    • 2.实时录音转文本脚本
  • 总结

前言

要想实现像豆包、微信等一样的语音输入功能,通常有两种主流方案:云端 API(轻量、准确度极高)和 本地模型(免费、隐私、无需联网)。由于目前开发的系统需要添加一个语音识别功能,刚好记录一下使用 Faster-Whisper 实时语音输入转文本。Faster-Whisper官网地址链接: Faster-Whisper官网地址

复现成功如下图所示,请看下文教程就能部署本地实时语音输入转文本模型:

电脑有显卡的话可以参考下面这篇文章安装 cuda 和 cudnn

cuda和cudnn的安装教程: cuda和cudnn的安装教程(全网最详细保姆级教程)


一、安装环境

在你的虚拟环境安装 faster-whisper,命令如下:

pip install faster-whisper


安装录音库

pip install pyaudiowpatch

二、使用步骤

1.下载模型

手动下载(离线使用)
如果你的服务器无法联网,或者你想把模型放在指定文件夹,可以手动下载。根据需求点击链接下载:

  • Tiny (最小/最快):Systran/faster-whisper-tiny
  • Base:Systran/faster-whisper-base
  • Small:Systran/faster-whisper-small
  • Medium:Systran/faster-whisper-medium
  • Large-v2:Systran/faster-whisper-large-v2
  • Large-v3 (效果最好):Systran/faster-whisper-large-v3
  • Distil-Large-v3 (蒸馏版/速度快):Systran/faster-distil-whisper-large-v3

在 Hugging Face 的“Files and versions”页面中,下载以下几个关键文件(放入同一个文件夹):

  • config.json
  • model.bin
  • tokenizer.json
  • vocabulary.json
  • preprocessor_config.json

我是下载 faster-whisper-large-v3 的模型下载链接: faster-whisper-large-v3 模型下载地址

把下载的模型文件放到一个文件夹内:

2.实时录音转文本脚本

代码如下(示例):

# -*- coding: utf-8 -*-""" @Auth :落花不写码 @File :mian.py @IDE :PyCharm @Motto :学习新思想,争做新青年 """importosimportsysimporttimeimportwaveimporttempfileimportthreadingimporttorchimportpyaudiowpatchaspyaudiofromfaster_whisperimportWhisperModel# 录音切片时长(秒)AUDIO_BUFFER=5defrecord_audio(p,device):# 创建临时文件withtempfile.NamedTemporaryFile(suffix=".wav",delete=False)asf:filename=f.name wave_file=wave.open(filename,"wb")wave_file.setnchannels(int(device["maxInputChannels"]))wave_file.setsampwidth(p.get_sample_size(pyaudio.paInt16))wave_file.setframerate(int(device["defaultSampleRate"]))defcallback(in_data,frame_count,time_info,status):"""写入音频帧"""wave_file.writeframes(in_data)return(in_data,pyaudio.paContinue)try:stream=p.open(format=pyaudio.paInt16,channels=int(device["maxInputChannels"]),rate=int(device["defaultSampleRate"]),frames_per_buffer=1024,input=True,input_device_index=device["index"],stream_callback=callback,)time.sleep(AUDIO_BUFFER)# 阻塞主线程进行录音exceptExceptionase:print(f"录音出错:{e}")finally:if'stream'inlocals():stream.stop_stream()stream.close()wave_file.close()returnfilenamedefwhisper_audio(filename,model):""" 调用模型进行转录 """try:# vad_filter=True 可以去掉没说话的静音片段segments,info=model.transcribe(filename,beam_size=5,language="zh",vad_filter=True,vad_parameters=dict(min_silence_duration_ms=500))forsegmentinsegments:print("[%.2fs -> %.2fs] %s"%(segment.start,segment.end,segment.text))exceptExceptionase:print(f"转录出错:{e}")finally:# 转录完成后删除临时文件ifos.path.exists(filename):os.remove(filename)defmain():print("正在加载 Whisper 模型...")# 检查 GPUiftorch.cuda.is_available():device="cuda"compute_type="float16"# 或者 "int8_float16"print("使用 GPU (CUDA) 进行推理")else:device="cpu"compute_type="int8"# CPU 上推荐用 int8print("使用 CPU 进行推理")# 模型路径model_path="large-v3"try:model=WhisperModel(model_path,device=device,compute_type=compute_type,local_files_only=True)print("模型加载成功!")exceptExceptionase:print(f"模型加载失败:{e}")returnwithpyaudio.PyAudio()asp:try:default_mic=p.get_default_input_device_info()print(f"\n当前使用的麦克风:{default_mic['name']}(Index:{default_mic['index']})")print(f"采样率:{default_mic['defaultSampleRate']}, 通道数:{default_mic['maxInputChannels']}")print("-"*50)print("开始持续录音 (按 Ctrl+C 停止)...")whileTrue:filename=record_audio(p,default_mic)thread=threading.Thread(target=whisper_audio,args=(filename,model))thread.start()exceptOSError:print("未找到默认麦克风,请检查系统声音设置。")exceptKeyboardInterrupt:print("\n停止录音,程序退出。")exceptExceptionase:print(f"\n发生未知错误:{e}")if__name__=='__main__':main()

报错:

Could not locate cudnn_ops64_9.dll. Please make sure it is in your library path!
Invalid handle. Cannot load symbol cudnnCreateTensorDescriptor

Faster-Whisper 所依赖的 CTranslate2 引擎是基于 cuDNN 9.x 版本编译的,我电脑上没有找到 cuDNN v9,看了一下官网的解释如下:

安装旧版本:

pip install--force-reinstall ctranslate2==4.4.0

还是报错:

找到你的 CUDA 安装在其他位置,我的在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin

找到 cublas64_11.dll,复制出来,改成 cublas64_12.dll

参考文章:
报错RuntimeError: Library cublas64_12.dll is not found or cannot be loaded

最后成功了


总结

对你有帮助请帮我一键三连。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 12:31:14

自然灾害与交通事故无人机检测数据集VOC+YOLO格式372张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):372标注数量(xml文件个数):372标注数量(txt文件个数):372标注类别数&…

作者头像 李华
网站建设 2026/4/15 2:39:16

2025年中国海洋大学计算机考研复试机试真题(附 AC 代码 + 解题思路)

2025年中国海洋大学计算机考研复试机试真题 2025年中国海洋大学计算机考研复试上机真题 历年中国海洋大学计算机考研复试上机真题 历年中国海洋大学计算机考研复试机试真题 更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream N 诺 DreamJudg…

作者头像 李华
网站建设 2026/4/13 15:27:54

python日常办公用品打印机耗材商城直售推荐购物系统的设计与实现_02i27_pycharm django vue flask

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 python日常办公用品打印机耗材商城直售推荐购物系统的设计与实…

作者头像 李华
网站建设 2026/4/10 7:10:07

Gin 框架 JSON 全链路:从响应返回到请求绑定

为什么 Gin 的 JSON 处理如此重要? 在现代 Web 开发中,JSON 是前后端通信的事实标准。作为 Go 领域最流行的 Web 框架,Gin 对 JSON 的支持极为完善——无论是返回结构化响应,还是解析并验证请求数据,都只需几行代码。 …

作者头像 李华
网站建设 2026/4/13 11:12:24

分压电路深度解析:从基本原理到高级应用的完全指南

分压电路深度解析:从基本原理到高级应用的完全指南 一、为什么分压电路无处不在? 打开任何一个电子设备,从智能手机到火星探测器,你几乎都会发现分压电路的身影。为什么这个由两个电阻组成的简单电路能成为电子设计的基石&#xf…

作者头像 李华