当前位置: 首页 > news >正文

本地搭建 Whisper 语音识别模型

Whisper 是由 OpenAI 开发的一款强大的语音识别模型,具有出色的多语言处理能力。搭建和使用 Whisper 模型可以帮助您将音频内容转换为文本,这在语音转写、语音助手、字幕生成等应用中都具有广泛的用途。本指南将对如何在本地环境中搭建 Whisper 语音识别模型进行详细的说明,并通过实例演示使您更容易理解和应用。

2. 准备工作

2.1 硬件要求

  • 处理器:最低双核 CPU,推荐四核以上。
  • 内存:至少 8GB RAM,推荐 16GB RAM。
  • 存储:足够的硬盘空间,用于安装软件和存储模型及音频数据,建议至少 10GB 可用空间。
  • GPU(可选):如果使用 GPU 加速,建议 NVIDIA GPU,需安装 CUDA。

2.2 软件要求

  • 操作系统:Windows 10 或 Linux(如 Ubuntu)。
  • Python:建议使用 Python 3.8 以上版本。
  • Git:用于克隆代码库。
  • ffmpeg:用于处理音频文件。

3. 安装 Python 环境

如果您的系统尚未安装 Python,可以遵循如下步骤:

Windows

  1. 访问 Python 官网 下载并安装最新版本的 Python。
  2. 在安装过程中,勾选 “Add Python to PATH” 选项。

Linux

在终端中输入以下命令安装 Python:

sudo apt update
sudo apt install python3 python3-pip

4. 下载 Whisper 模型

4.1 了解 Whisper 模型

Whisper 是一个预训练的语音识别模型,支持多种语言,适用于各种音频数据的转录。它生成的文本输出比其他模型更完整,适合用于实时识别和音频转写。

4.2 安装依赖项

使用以下命令安装 Whisper 及其依赖项:

pip install git+https://github.com/openai/whisper.git
pip install torch torchvision torchaudio
pip install ffmpeg-python

安装过程可能需要几分钟,请耐心等待。确保您的网络连接稳定,以便顺利下载所需的库。

5. 使用 Whisper 进行语音识别

5.1 识别音频文件

准备好后,您可以使用 Whisper 对音频文件进行识别。

创建一个新的 Python 文件,命名为 transcribe.py,并在其中添加以下代码:

import whisper# 加载 Whisper 模型
model = whisper.load_model("base") # 可以选择 "tiny", "base", "small", "medium", "large"# 加载和转录音频
def transcribe_audio(file_path):
audio = whisper.load_audio(file_path)
audio = whisper.pad_or_trim(audio)
mel = whisper.log_mel_spectrogram(audio).to(model.device)# 检测语言
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")# 转录音频
result = model.transcribe(file_path)
return result["text"]if __name__ == "__main__":
audio_file = "your_audio_file.wav" # 替换为你的音频文件路径
transcription = transcribe_audio(audio_file)
print("Transcription:", transcription)

5.2 实时语音识别

Whisper 还可以用于实时语音识别,您可以使用库 sounddevice 来捕获音频并将其转写。

安装 sounddevice

pip install sounddevice numpy

在 transcribe.py 中添加实时识别功能:

import sounddevice as sd
import numpy as np
import queue# 设置音频参数
SAMPLE_RATE = 16000
DURATION = 10 # 时间限制q = queue.Queue()def callback(indata, frames, time, status):
q.put(indata.copy())# 实时识别音频
def real_time_transcribe():
with sd.InputStream(samplerate=SAMPLE_RATE, channels=1, callback=callback):
print("Recording...")
sd.sleep(DURATION * 1000) # 记录指定时间
print("Recording stopped.")audio_data = np.concatenate(list(q.queue))
audio = whisper.pad_or_trim(audio_data.flatten())
mel = whisper.log_mel_spectrogram(audio).to(model.device)# 转录音频
result = model.transcribe(mel)return result["text"]if __name__ == "__main__":
transcription = real_time_transcribe()
print("Transcription:", transcription)

6. 实际操作案例

6.1 音频文件的准备

我们需要准备一些音频文件进行测试,可以使用自己的录音,或者从网上下载一些公开的音频文件。建议使用 WAV 格式的高质量录音。

例如,可以使用 Free Music Archive 或 LibriVox 下载一些公共领域的音频文件。

6.2 使用 Whisper 识别音频

  1. 将准备好的音频文件放在与 transcribe.py 相同的目录中。
  2. 打开终端,导航到项目目录,运行以下命令:
python transcribe.py
  1. 您将看到输出的转录文本在控制台中打印出来。

7. 常见问题解答

7.1 为什么模型加载缓慢?

Whisper 模型文件较大,加载时间取决于您的计算机性能。可以使用较小的模型(例如 tiny 或 base)来缩短加载时间,但可能会影响识别精度。

7.2 识别的文本不正确,怎么办?

影响识别准确度的因素多种多样,包括音频质量、说话人的口音、背景噪声等。确保使用高质量的音频文件并对音频进行适当的预处理,可以提高识别的准确性。

7.3 如何处理不同格式的音频?

Whisper 支持多种音频格式(如 WAV, MP3)。确保您的音频文件经过适当的解码和处理。如果使用 FFmpeg,可以使用以下命令将文件转换为 WAV 格式:

ffmpeg -i input.mp3 output.wav

通过本指南,您已经成功地在本地搭建了 Whisper 语音识别模型,并学习了如何使用它进行音频转录和实时识别。Whisper 作为一个先进的语音识别工具,具有强大的功能和灵活性,非常适合各种应用场景。

相关文章:

本地搭建 Whisper 语音识别模型

Whisper 是由 OpenAI 开发的一款强大的语音识别模型,具有出色的多语言处理能力。搭建和使用 Whisper 模型可以帮助您将音频内容转换为文本,这在语音转写、语音助手、字幕生成等应用中都具有广泛的用途。本指南将对如何在本地环境中搭建 Whisper 语音识别…...

数据集成-缝合一套数据仓库Infra的臆想

一、数据集成当前困境 目前数据集成基础设施建设仅一个单一数据库,无法很好支持上层应用的建设步骤,继续采用当前设施跟随产品的策略,数据产品开发受限巨大,从目前实施的几个产品看,存在以下主要问题: 功能…...

运营有哪几种?

运营又有很多类,分为:内容运营、用户运营、活动运营、产品运营、新媒体运营、社群运营、电商运营、短视频运营 1.内容运营: 做内容提升各类数据,比如内容的数量/浏览数量/互动数传播数等。 适合人群:适合喜欢看文章热…...

Android视频编辑:利用FFmpeg实现高级功能

在移动设备上进行视频编辑的需求日益增长,用户期望能够在智能手机或平板电脑上轻松地编辑视频,以满足社交媒体分享或个人存档的需求。Android平台因其广泛的用户基础和开放的生态系统,成为视频编辑应用的理想选择。FFmpeg,作为一个…...

图片无损缩放PhotoZoom Pro 9.0.2绿色版 +免费赠送PhotoZoom激活优惠代码

PhotoZoom Pro 9.0.2 是一款专业的图片无损缩放软件,该软件采用了 benvista s-spline 独特技术,增强了对图像格式的支持,多处理器支持,GPU 加速,win10和 Photoshop CC 支持。带来一流的数字图形扩展与缩减技术。该软件…...

tekton pipelineresources

PipelineResource 代表着一系列的资源,主要承担作为 Task 的输入或者输出的作用。它有以下几种类型: git:代表一个 git 仓库,包含了需要被构建的源代码。将 git 资源作为 Task 的 Input,会自动 clone 此 git 仓库。pu…...

OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、选择映射(SLM) 4.2 相位截断星座图(PTS) 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 mat…...

常见概念 -- 光回波损耗

什么是回波损耗 回波损耗,又称为反射损耗,当高速信号进入或退出光纤的某个部分(例如光纤连接器),不连续和阻抗不匹配会引起反射,这就是光纤回波损耗。器件的回波损耗Return Loss(RL)是光信号的输入端口的反…...

uni-app环境搭建

目录 一、下载HBuilder X: 二、创建项目 1、通过HBuliderX创建 2、通过vue-cli命令行创建 三、app真机运行 1、真机运行: 2、打包发行 四、微信小程序调试 1、下载微信小程序开发者工具 2、运行项目:运行---> 运行到小程序模拟器----> 微信开发者工…...

数据结构 栈 队列

系统栈: 保护局部变量 函数的形参和返回值 函数的调用关系(保护现场,恢复现场操作,遵循先进后出,后进先出) 数据结构栈(顺序栈,链式栈): 同样遵遵循先进…...

嵌入式学习路线+嵌入式校招建议 嵌入式学习面试规划

随着物联网、人工智能以及5G等技术的迅猛发展,嵌入式系统的需求逐渐增多。作为毕业生,如何制定一个合理的学习路线,以确保在找工作、参加校招时有足够的竞争力,是非常重要的。我会为你提供一个更加详细、系统的学习路线建议&#…...

服务器深度学习环境配置

学校提供的服务器,参考意见比较低 目录 公有云操作云主机操作系统修改: xshell连接深度学习环境配置显卡驱动检查安装检查 CUDA检查CUDA下载配置环境变量检查 conda 公有云操作 打开控制中心 节点选择 山东-青岛20 打开弹性云主机 云主机 系统已经默认…...

使用 Parallel 类进行多线程编码(下)

2.Parallel.ForEach() 的使用 从 ForEach() 这个名字可以看出该方法是用来遍历泛型集合的,新建一个 ASP.NET Core Web应用的项目,如下: 在 Index.cshtml.cs 文件中增加一个 UserInfo.cs 的类,代码如下: public class U…...

基于微信小程序+Java+SSM+Vue+MySQL的药店管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSSMVueMySQL的药店管理系统【附源码文档…...

C#使用MQTT(一):MQTT服务端

MQTT(Message Queuing Telemetry Transport) 即时通讯协议, 开发商 IBM MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状…...

AD原理图update为pcb

首先,要在自己的项目下面创建好原理图和PCB,记得保存!!! 点击设计>update 更新成功!...

应用海外仓系统后,可以改善哪些海外仓的核心业务流程?

随着跨境电商的快速发展,海外仓作为物流的重要环节,其运营效率直接影响到企业的市场竞争力。应用海外仓系统(WMS)可以有效改善海外仓的核心业务流程,以下将详细介绍四大核心流程的优化措施。 一、货物接收入库流程的改…...

SQL进阶技巧:截止当前批次前的批次量与订单量 | 移动窗口问题

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 表A有如下字段,user id(用户ID),batch id(批次ID),order id(订单ID),create time(创建时间),同一个用户ID下有多个批次,同一个批次下有多个订单ID,相同批次ID的创建时间是相同的,创建时间精确到了秒。 统计,截…...

C#中的Graphics类和SetQuality()自定义方法

在 C# 中,Graphics 类是 System.Drawing 命名空间的一部分,它提供了一组方法和属性,用于在 Windows Forms 应用程序中进行二维绘图。Graphics 对象可以绘制文本、线条、曲线、形状和图像,并可以对它们进行变换和剪辑。 Graphics …...

圣诞节:白酒与西式料理的异国风情

随着冬日的脚步渐近,圣诞的钟声即将敲响。在这个充满异国情调和温馨氛围的节日里,一场中西合璧的美食盛宴悄然上演。豪迈白酒(HOMANLISM)与西式料理的碰撞,不仅为圣诞餐桌增添了几分不同的韵味,更让人们在这…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...