本地搭建 Whisper 语音识别模型

2024-09-05 19:28

本文主要是介绍本地搭建 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 语音识别模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139847

相关文章

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推