开源语音转文本项目Whisper Web本地安装详细教程

前言

OpenAI开源的 Whisper 语音转文本模型效果都说还不错,今天就给大家推荐 GitHub 上一个开源项目 Whisper Web,允许你可直接在浏览器中运行使用 Whisper。

基于 ML 进行语音识别,并可通过 WebGPU 进行运行加速,无需后端服务器,直接开箱即用。另外,识别到的文本支持导出 TXT 和 JSON 两种文件格式。

而结合cpolar内网穿透工具使用,还能轻松实现远程访问本地Windows系统部署的Whisper Web进行语音转文本操作,无需公网IP,也不用设置路由器那么麻烦。

1.本地部署Whisper Web

接下来教大家如何在Windows系统本地安装Whisper Web

项目地址:https://github.com/xenova/whisper-web

1.1 安装git

首先需要从github上克隆Whisper Web(如果没有安装git的话,进入git官网进行下载windows版本 https://git-scm.com/downloads)

image-20240506142150939

打开终端,从github下载项目到本地,执行下面的命令:

git clone https://github.com/xenova/whisper-web.git

image-20240618144638825

创建新目录

cd whisper-web

1.2 安装Node.js

然后在项目的根目录下,执行下面的命令:

npm install

如果安装报错,可以检查是否安装Node.js,如未安装可以点击链接下载:

https://nodejs.org/en/download/prebuilt-installer

image-20240618150652378

本例中使用的是下载安装包进行安装,安装后重启终端执行上边npm安装命令即可。

image-20240618150827252

1.3 运行项目

在项目的根目录下,运行Whisper Web,可以看到运行成功,出现http://localhost:5173

npm run dev

image-20240618151254520

此时,我们在浏览器中输入上边的地址,即可打开Whisper Web页面:

image-20240618151407016

2. Whisper Web使用介绍

在Whisper Web界面,我们可以使用粘贴音频地址,上传音频文件,和使用手机录入语音等方式进行语音转文本的操作。

这里以上传音频文件为例,在上传了一段音频文件后,点击音频进度条下方的设置按钮,进行模型切换和输出为其他语言的选择。

24d3764fa1847145ffe3d5b57a8e6cd

设置完毕后,点击下方的transcribe Audio按钮即可自动进行音频转文本:

image-20240618165648974

55a7eb796afc48fcd756cc2b4dd9772

转换结束后,我们可以将文本导出为TXT或者JSON格式到指定文件夹。

fa30178d10efd4e40f6cac6c42b3d73

3. 安装Cpolar内网穿透

目前我们在本机部署了Whisper Web,但如果没有公网IP的话,只能在本地局域网环境使用,有一定局限性。如果想在异地通过其他设备使用的话,可以结合Cpolar内网穿透实现远程访问,免去了本地重新部署过程,只需要cpolar生成的公网地址直接就可以链接到Whisper Web中。

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

点击进入cpolar官网,点击免费使用注册一个账号,并下载最新版本的Cpolar

img

登录成功后,点击下载Cpolar到本地并安装(一路默认安装即可)本教程选择下载Windows版本。

image-20240319175308664

Cpolar安装成功后,在浏览器上访问http://localhost:9200,使用cpolar账号登录,登录后即可看到Cpolar web 配置界面,结下来在web 管理界面配置即可。

img

4. 配置公网地址

接下来配置一下本地 Whisper Web 的公网地址,

登录后,点击左侧仪表盘的隧道管理——创建隧道,

创建一个 Whisper Web 的公网http地址隧道:

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:5173
  • 域名类型:免费选择随机域名
  • 地区:选择China Top

点击创建

image-20240618170627866

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,分别是http和https。

image-20240618170724707

使用任意一个上面Cpolar生成的公网地址,在电脑或任意设备在浏览器进行登录访问,即可成功看到 Whisper Web 界面,这样一个可以远程访问的公网地址就创建好了,使用了Cpolar的公网域名,无需自己购买云服务器,即可在公网访问本地部署的服务了!

5. 公网访问测试

我们用刚才cpolar生成的公网地址,打开一个新的浏览器复制粘贴,可以看到进入到了Whisper Web项目的管理界面。

image-20240618171040818

小结

由于刚才创建的是随机的地址,24小时会发生变化。另外它的网址是由随机字符生成,不容易记忆。如果你有长期远程访问本地部署服务的需求,或者想把域名变成固定,好记的二级子域名,并且不想每次都重新创建隧道来访问你在本地部署的服务,我们可以选择创建一个固定的http地址来解决这个问题。

6. 配置固定公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,方便分享给别人长期查看你的博客,而无需每天重复修改服务器地址。

配置固定http端口地址需要将cpolar升级到专业版套餐或以上。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称。

image-20240618171534993

保留成功后复制保留成功的二级子域名的名称:Whisper123(大家可以自定义)

image-20240618171630004

返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 Whisper,点击右侧的编辑:

image-20240618171703608

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240618171745930

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

image-20240618171817884

最后,我们使用固定的公网地址在任何浏览器打开访问,可以看到成功访问 Whisper Web,这样一个固定且永久不变的公网地址就设置好了。

1718702394261

以上就是如何在Windows系统电脑本地部署语音转文本服务Whisper Web,并结合cpolar内网穿透工具实现远程访问使用的全部流程,另外由于该服务无需账号即可在浏览器直接访问,出于安全考虑,建议大家远程访问时不要轻易与他人分享地址,感谢您的观看,有任何问题欢迎留言交流。

<think>嗯,用户想了解如何使用Whisper训练自定义数据集来构建语音识别模型。首先,我需要回忆一下Whisper的基本信息。Whisper是OpenAI开源的自动语音识别模型,支持多语言,基于Transformer架构,对吧?用户提到的引用里提到项目Whisper-Finetune支持不同训练模式,包括无时间戳数据的情况,这可能对数据准备有帮助。 用户需要详细的步骤和教程,所以得按流程来。首先应该是环境配置,然后数据准备,接着模型训练,最后是部署。引用里的资料提到需要安装PyTorch和TensorFlow,可能还需要Hugging Face的库,比如Transformers和Datasets。数据准备的格式可能需要音频文件加对应的文本,可能需要处理成特定结构,比如数据集目录,每个音频文件对应一个文本文件。 数据预处理方面,可能需要使用Whisper自带的特征提取器,将音频为log-Mel频谱图。然后要处理文本标签,比如分词和编码。这里要确保数据格式符合模型输入要求,可能需要使用WhisperProcessor来处理音频和文本。 训练部分,用户可能需要加载预训练模型,设置训练参数,比如学习率、批次大小,使用Hugging Face的Trainer类来简化训练过程。引用中提到的项目Whisper-Finetune可能提供了训练脚本或示例代码,可以参考他们的实现,特别是如何处理不同训练模式,比如带时间戳或不带时间戳的数据。 微调后的模型保存和评估也很重要,用户可能想知道如何测试模型效果,比如使用WER(词错误率)作为指标。部署方面,引用提到支持Web、Windows和Android部署,可能需要将模型导出为ONNX或其他格式,或者使用相应的框架进行封装。 可能还需要注意一些常见问题,比如数据集规模、计算资源要求,以及如何处理多语言的情况。用户如果数据集较小,可能需要数据增强或者迁移学习的技巧。另外,引用中提到的Google Drive集成可能帮助用户存储数据和模型,特别是在Colab环境下运行训练时。 最后,用户的问题可能还涉及具体的代码示例,比如如何加载模型、准备数据集、训练循环等。需要确保代码示例正确,并符合用户的环境配置,比如使用正确的库版本。同时,提醒用户注意依赖项的安装,避免版本冲突。</think>### 使用 Whisper 训练自定义数据集的详细步骤 #### 1. **环境配置** - **安装依赖库**:需安装 PyTorch、Hugging Face Transformers 和 Datasets 库: ```bash pip install torch transformers datasets datasets[audio] jiwer ``` - **GPU 支持**:确保 CUDA 环境已配置,以加速训练[^4]。 #### 2. **数据准备** - **数据集格式**:音频文件(如 `.wav`)需与对应文本标注文件(`.txt`)配对,目录结构示例: ``` dataset/ ├── audio/ │ ├── sample1.wav │ └── sample2.wav └── labels/ ├── sample1.txt └── sample2.txt ``` - **格式换**:若音频非 16kHz 采样率,需使用工具(如 `ffmpeg`)换: ```bash ffmpeg -i input.mp3 -ar 16000 output.wav ``` #### 3. **数据预处理** - **加载 Whisper 处理器**: ```python from transformers import WhisperProcessor processor = WhisperProcessor.from_pretrained("openai/whisper-small") ``` - **特征提取与标注处理**: ```python def prepare_dataset(batch): audio = batch["audio"]["array"] batch["input_features"] = processor(audio, sampling_rate=16000).input_features[0] batch["labels"] = processor.tokenizer(batch["text"]).input_ids return batch ``` #### 4. **模型加载与训练配置** - **加载预训练模型**: ```python from transformers import WhisperForConditionalGeneration model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small") model.config.forced_decoder_ids = None # 禁用强制语言标记 ``` - **设置训练参数**: ```python from transformers import Seq2SeqTrainingArguments training_args = Seq2SeqTrainingArguments( output_dir="./results", per_device_train_batch_size=8, learning_rate=1e-5, num_train_epochs=3, fp16=True # 启用混合精度训练 ) ``` #### 5. **训练与评估** - **使用 Hugging Face Trainer**: ```python from transformers import Seq2SeqTrainer trainer = Seq2SeqTrainer( model=model, args=training_args, train_dataset=dataset, tokenizer=processor.tokenizer ) trainer.train() ``` - **计算词错误率 (WER)**: ```python from evaluate import load wer_metric = load("wer") predictions = model.generate(input_features) wer = wer_metric.compute(predictions=predictions, references=labels) ``` #### 6. **模型部署(示例:Web API)** ```python from flask import Flask, request import torchaudio app = Flask(__name__) @app.route("/transcribe", methods=["POST"]) def transcribe(): audio_file = request.files["audio"] waveform, sr = torchaudio.load(audio_file) inputs = processor(waveform, return_tensors="pt", sampling_rate=16000) output = model.generate(inputs.input_features) text = processor.batch_decode(output, skip_special_tokens=True)[0] return {"text": text} ``` ### 关键注意事项 - **数据规模**:建议至少 100 小时语音数据以保障效果[^3]。 - **计算资源**:训练 `whisper-large` 需 16GB 以上 GPU 显存。 - **多语言支持**:通过设置 `language` 参数指定目标语言: ```python forced_decoder_ids = processor.get_decoder_prompt_ids(language="zh", task="transcribe") ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值