当前位置: 首页 > 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 作为一个先进的语音识别工具,具有强大的功能和灵活性,非常适合各种应用场景。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 万能无线航模模拟器加密狗说明书
  • 图像与文本并存,多模态检索如何带来新的搜索革命
  • Linux:目录及文件管理
  • Parsec问题解决方案
  • 猜测、实现 B 站在看人数
  • WinCC V7.5与S7-1200 PLC 通信
  • Linux学习-Ansible(一)
  • 自建,前端sdk库(react-utils-dev-sdk)
  • C++入门项目:Linux下C++轻量级Web服务器 跑通|运行|测试(小白进)
  • android kotlin基础复习 enum
  • 【C++】_list常用方法解析及模拟实现
  • 高级java每日一道面试题-2024年9月05日-数据库篇-谈一下聚集索引和非聚集索引?
  • SQL server 删除重复行
  • 〖open-mmlab: MMDetection〗解析文件:mmdet/models/detectors/two_stage.py
  • 1.9 Crash(三,Ramdump的分析)
  • 分享的文章《人生如棋》
  • 收藏网友的 源程序下载网
  • 《剑指offer》分解让复杂问题更简单
  • docker python 配置
  • ESLint简单操作
  • HTML中设置input等文本框为不可操作
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Javascript基础之Array数组API
  • miaov-React 最佳入门
  • mysql 数据库四种事务隔离级别
  • Mysql5.6主从复制
  • Service Worker
  • Spring Cloud中负载均衡器概览
  • Tornado学习笔记(1)
  • webpack+react项目初体验——记录我的webpack环境配置
  • 聊聊hikari连接池的leakDetectionThreshold
  • 聊聊redis的数据结构的应用
  • 事件委托的小应用
  • 思否第一天
  • 学习ES6 变量的解构赋值
  • 一些css基础学习笔记
  • 应用生命周期终极 DevOps 工具包
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • Linux权限管理(week1_day5)--技术流ken
  • ​iOS安全加固方法及实现
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #Linux(Source Insight安装及工程建立)
  • #QT(智能家居界面-界面切换)
  • (52)只出现一次的数字III
  • (C++)八皇后问题
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转) Android中ViewStub组件使用
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)程序员疫苗:代码注入
  • (转载)Linux 多线程条件变量同步
  • ****三次握手和四次挥手