初探之基于 openai/whisper 模型实现语音转文本

大家好,欢迎来到前端研习圈。

前言

本期的主题是通过 OpenAi 的语言识别模型 whisper 来实践一个 语音转文本 的功能。

由于技术栈以 python 为主,结合受众群体考虑,本期我们主要完成环境部署,实现呢就不手敲了,直接找社区贡献的 demo 跑通来演示一下。在开始之前,我们先来大致了解一下 whisper

whisper 简介

通过官方简介我们可以知道 whisper 是一个通用的,经过大量的音频数据训练出来的支持多任务处理的语言识别,语言翻译 模型

可选的 sizetiny, base, small, medium, large,详细数据如图

下面展示了 whisper 支持语言的种类,以及在 Common Voice 15Fleurs 数据集上使用的 WER (单词错误率)或 CER (字符错误率) 相关指标

有了以上的了解,那么接下来,我们开始今天的实践~

环境安装

众所周知,凡事涉及到机器学习,模型训练等相关的领域,基本都是 python 技术栈,当然 whisper 也不例外。

在安装指南中我们可以了解到,whisper 虽然是用的 python(3.9.9) 版本 和 pyTorch(1.10.1) 版本来训练的,但也能兼容到比较新的版本

因此我们选择

  • python - 3.11.7 版本
  • pyTorch - 2.2.1 版本

为了方面后续灵活切换 python 的版本,我们先安装 python 的版本管理工具 pyenv

安装 pyenv

Windows 下,我们需要安装 pyenv 的 windows 版本 pyenv-win

pyenv 安装指南

github.com/pyenv-win/p...

这里我们直接选择下载 zip 包的方式,下载完成后将 bin 的路径配置到 环境变量 中即可

安装 python

有了 pyenv,我们直接执行如下命令

pyenv install 3.11.7

然后等待安装完成

安装 pyTorch

pyTorch 是基于 python 的一个 深度学习 框架,我们直接到官网去拷贝安装指令即可

pyTorch 官网 https://pytorch.org/

这里 pip3 是 python3 的一个包管理工具,安装 python 时会同步安装。因此我们只需要把 安装指令 拷贝到终端执行,然后等待安装完成

perl 复制代码
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

安装 ffmpeg

whisper 在处理音频文件时会用到 ffmpeg ,这里也需要安装一下。我们直接到 github 中去下载 ffmpeg 最新版本的构建产物

github.com/BtbN/FFmpeg...

同样,下载完成后将 bin 目录配置到 环境变量 中即可

之后在终端确认一下是否安装成功

OK,到这里,需要的环境我们就全部安装好啦

DEMO

我们直接从社区提供的 demo 找一个比较具有代表性的来跑一下

github.com/gustavostz/...

先把这个仓库 fork 一下,clone 到我们本地

bash 复制代码
git clone git@github.com:Mumujianguang/whisper-clip.git

然后就是传统的依赖安装环节

pip3 install -r requirements.txt

源码中默认用的是仅支持英文的 medium.en 模型,这里我们改成支持多语言的 medium 模型

接下来就可以把程序跑起来了

css 复制代码
python main.py

在启动程序之前,会先将模型下载下来,这里可以看到需要下载 1.42G 的内容

程序跑起来之后会运行一个弹窗面板,功能大致如下

  • 点击后开始录音,再次点击结束录音
  • 这段录音会落盘生成一个 wav 的音频文件
  • 随后交给 whisper 去识别输出音频中的内容

接下来我们说一句 吃饭没 我想吃蛋炒饭 ,结束录音后大概 1-2s,终端就输出了识别结果,丝毫不差,在此感叹一句 AI 的强大~

接着我再多说几句

  • 大家好,欢迎来到前端研习圈
  • 大家好,我是陆星材,请多多关心吧!

虽然有些字不准确,但发音都识别对了,这也还只是个中等模型,还是很不错了

写在最后

对于前端的同学来说,看完是不是觉得 AI 也并非遥不可及,未来类似基于 大模型 的库会越来越多,希望大家时刻关注前沿技术的发展,能早日将 AI 应用到自己的工作与生活中

这期就到这里,我们下期见~

相关推荐
查理零世33 分钟前
保姆级讲解 python之zip()方法实现矩阵行列转置
python·算法·矩阵
刀客12344 分钟前
python3+TensorFlow 2.x(四)反向传播
人工智能·python·tensorflow
sysu632 小时前
95.不同的二叉搜索树Ⅱ python
开发语言·数据结构·python·算法·leetcode·面试·深度优先
SsummerC2 小时前
【leetcode100】从前序与中序遍历序列构造二叉树
python·算法·leetcode
陌北v12 小时前
PyTorch广告点击率预测(CTR)利用深度学习提升广告效果
人工智能·pytorch·python·深度学习·ctr
Мартин.3 小时前
[Meachines] [Easy] Bashed PHP Bash+Python计划任务权限提升
python·php·bash
码界筑梦坊3 小时前
基于Flask的旅游系统的设计与实现
python·flask·毕业设计·旅游
辞落山4 小时前
自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合
python·线性回归·scikit-learn
Allen200005 小时前
wow-agent---task4 MetaGPT初体验
人工智能·python·pygame
源代码杀手8 小时前
【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析
windows·python·音视频