主题:OpenAI Whisper 转换声音到文字 -- nanimarcusboy
chatGPT 很火,背后的公司 OpenAI。
这个公司有很多技术,我看到有一个是 Whisper,学名叫 automatic speech recognition (ASR) ,就是转换声音到文字的。
我用过很多类似的工具,所以很有兴趣的研究了一下,然后这个 Whisper 惊艳了我的无聊时光。
喃喃自语 居然这么强大,真是 于无声处听惊雷。
下面讲讲怎么安装使用。
----
网址和代码:
https://openai.com/blog/whisper/
https://github.com/openai/whisper
记住,一定要安装 CUDA 版本,利用显卡,完全靠CPU,实在费劲。
准备12G硬盘最少。
----
Windows 10, Nvidia CUDA 的安装过程。
https://developer.nvidia.com/cuda-downloads
Windows -> X86_64 -> 10 ->exe(local)
得到一个很大的安装文件,安装
--
Python 3, torch 安装
如果原来安装了,卸载掉。
pip3 uninstall torch torchvision torchaudio
--
torch CUDA 版本要下载一个2.4G 的安装包,和CPU版本明显不同。
pip3 install setuptools-rust
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
--
whisper 卸载,如果原来装过,建议重新安装一次
pip3 uninstall openai-whisper
--
whisper 安装
pip3 install -U openai-whisper
--
然后试一下。
whisper -h
注意其中一行,设备
如果是CPU,那么CUDA就没有安装成功
--device DEVICE device to use for PyTorch inference (default: cpu)
CUDA安装成功,显示的就是CUDA
--device DEVICE device to use for PyTorch inference (default: cuda)
----
找一个wav文件,试一下,用的是 small model,已经够好了。
whisper --model small -f all --language en out.wav
第一次运行,需要下载 model 文件,small 大概400M。
-f all ,有多种格式 全部都要。
--language en ,指定英文,否则会自动探测
另外还自带其他语言翻译成英文的功能,我还没有用过。
--
whisper 是能够直接读取MP4之类的视频文件,但是先做处理更有效率。
网上人建议的是 16K 的wav文件,转换命令如下:
ffmpeg -i input.mp4 -acodec pcm_s16le -ar 16000 out.wav
--
Windows 10 打开 task manager, 看到我的GPU的内存全部占用,GPU占用70%
--
结果我很满意,准确的断句,专用词识别,人名地名大小写,缩写,甚至有些专业词汇也能识别。
一个大叔两个半小时的讲话,语速快,口语化极其严重,涉及到很多地名人名,两个小时识别完成,断句很准确,基本上所有名字,包括缩写都识别出来了。
一个讲中途岛海战的讲话,所有日本人名,日本舰船的名字都识别出来。
而且所有日期数量都准确写好,而不仅仅是用英文打出来。
看的出来,不仅仅是语言识别,也有大量网上文本的训练
--
好吧,下一步的问题是,程序员同志们的工作机会是更多了呢,还是更少了呢。
OpenAI Whisper 用了几天,一些感受。
1,监控CUDA, Windows 10
Task Manager -> GPU -> CUDA
右边一般四个框,最常用的性能,第一个隐含是3D,点一下,换成 CUDA。
我这里基本 90% 以上。
2,拿个小风扇,对着显卡吹,不然太烫了,吹了就是有点烫。
3,如果文件里人的声音不是很清楚的话,断句就没有了,字词还在,基本准确。
4,显卡的内存限制你使用的model,我的老显卡只能用 small,你要用更大的模型需要有大内存的显卡。
--
网上有人写了一个脚本 whisper_mic,可以实时识别,但是Linux的,我没有试过。
--
讯飞的桌面版我用过,但是明显在网上传数据,只能放在隔离的机器上用。
--
微信是24小时监控麦克风的,你说的内容实际上给你上传了,所以我尽量不用。
Whisper 隐含是英文,模型用 small.en,语言不用指定
whisper --model small.en -f srt A.whisper.wav
----
如果是其他语言,比如德语,模型用 small,语言指定德语
whisper --model small -f srt --language de A.whisper.wav
----
如果是其他语言,比如德语,且翻译成英语,模型用 small,语言指定德语,指定任务是翻译。
whisper --model small --task translate -f srt --language de A.whisper.wav
----
那么理论上Whisper 应该可以将一个德语文档翻译成英文,也许代码里应该可以修改出来。
没看懂, 既然用 API 对文件大小有限制, 那就买块显卡本地跑, 就是个电费.
我跑过最大的一个视频文件2G 的MP4, 转换成 wav 文件大概 400M, wav 文件大概一个小时200M左右, 运行需要的时间大概 1:1 , 不过我的显卡太老了.
如果买块3080的是不是会跑的飞快.
而且作者似乎不知道应该用显卡跑, 用CPU太弱了.
"
OpenAI开源了语音识别模型Whisper,这个模型你是可以本地跑的,配合训练好的数据集可以离线识别语音,但是对机器配置有要求,另外你想识别效果好,得好几G的存储和内存。它也提供了API,这样服务端可以帮你跑,不需要你本地运行程序,但是一次最大文件大小25MB,价钱10分钟6美分
"
- 相关回复 上下关系8
🙂OpenAI Whisper 转换声音到文字
🙂利用 Whisper 服务识别,速度是本机的 20 倍 nanimarcusboy 字727 2023-04-14 06:17:41
🙂没看懂, 既然用 API 对文件大小有限制, 那就买块显卡本 4 nanimarcusboy 字768 2023-03-12 10:49:42
🙂Whisper 隐含是英文,模型用 small.en,语言不 2 nanimarcusboy 字574 2023-02-26 06:28:47
🙂请教下,可以识别中文语音然后翻译成英文吗 hamigua 字9 2023-06-03 00:39:47
🙂试了下是可以的,多谢楼主了 hamigua 字283 2023-06-03 07:45:19
🙂OpenAI Whisper 使用的感受和想法 4 nanimarcusboy 字864 2023-02-22 06:01:33
🙂你显卡是哪一代的 1 川普 字78 2023-04-14 23:23:40