西西河

主题:OpenAI Whisper 转换声音到文字 -- nanimarcusboy

共:💬12 🌺51 新:
分页树展主题 · 全看
  • 家园 OpenAI Whisper 转换声音到文字 -- 有补充

    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%

    --

    结果我很满意,准确的断句,专用词识别,人名地名大小写,缩写,甚至有些专业词汇也能识别。

    一个大叔两个半小时的讲话,语速快,口语化极其严重,涉及到很多地名人名,两个小时识别完成,断句很准确,基本上所有名字,包括缩写都识别出来了。

    一个讲中途岛海战的讲话,所有日本人名,日本舰船的名字都识别出来。

    而且所有日期数量都准确写好,而不仅仅是用英文打出来。

    看的出来,不仅仅是语言识别,也有大量网上文本的训练

    --

    好吧,下一步的问题是,程序员同志们的工作机会是更多了呢,还是更少了呢。

    通宝推:愚弟,唐家山,川普,心有戚戚,奔波儿,
    作者 对本帖的 补充(3)
    家园 OpenAI Whisper 使用的感受和想法 -- 补充帖

    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 隐含是英文,模型用 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 对文件大小有限制, 那就买块显卡本 -- 补充帖

    没看懂, 既然用 API 对文件大小有限制, 那就买块显卡本地跑, 就是个电费.

    我跑过最大的一个视频文件2G 的MP4, 转换成 wav 文件大概 400M, wav 文件大概一个小时200M左右, 运行需要的时间大概 1:1 , 不过我的显卡太老了.

    如果买块3080的是不是会跑的飞快.

    而且作者似乎不知道应该用显卡跑, 用CPU太弱了.

    "

    OpenAI开源了语音识别模型Whisper,这个模型你是可以本地跑的,配合训练好的数据集可以离线识别语音,但是对机器配置有要求,另外你想识别效果好,得好几G的存储和内存。它也提供了API,这样服务端可以帮你跑,不需要你本地运行程序,但是一次最大文件大小25MB,价钱10分钟6美分

    "

    • 家园 利用 Whisper 服务识别,速度是本机的 20 倍

      参考

      https://platform.openai.com/docs/guides/speech-to-text

      ----

      import openai

      audio_file= open("/path/to/file/audio.mp3", "rb")

      transcript = openai.Audio.transcribe("whisper-1", audio_file)

      ----

      后一句修改一下,这样拿到的是 srt 文件

      transcript = openai.Audio.transcribe("whisper-1", audio_file, ,

      response_format="srt")

      ----

      文件大小限制是 25M,所以一般先转换成mp3:

      ffmpeg -hide_banner -y -i input.mp4 -acodec libmp3lame -b:a 64k output.mp3

      25M mp3 差不多 50 分钟。

      再大的话可切成小段,处理后再合并。

      ----

      典型 mp3 文件长度 600秒,识别用了25秒:

      -- length : 600.792 seconds

      -- runtime: 25.17 seconds

      ----

      好吧,现在看看给了我多少quota.

      ----

  • 见前补充 4871518
  • 见前补充 4865452
      • 家园 请教下,可以识别中文语音然后翻译成英文吗 -- 有补充

        多谢了

        作者 对本帖的 补充(1)
        家园 试了下是可以的,多谢楼主了 -- 补充帖

        将中文翻译为英文并输出为vtt格式字幕的python代码:

        import whisper

        model = whisper.load_model("medium")

        task = "translate" # Default is "transcribe"

        r= model.transcribe("t.wav", task=task)

        output_writer = whisper.utils.get_writer("vtt", "./")

        output_writer(r,"t.wav")

      • 见前补充 4902877
  • 见前补充 4864019
      • 家园 你显卡是哪一代的

        不过,现在语言转换真的随手都是,chrome加个附件就可以了

        • 家园 主要是 Whisper 质量比较好,速度倒不怎么样。

          主要是 Whisper 质量比较好,速度倒不怎么样。

          用Google的,速度可以说是即时的,但是需要声音质量非常好,稍微差点就不行。

          再一个 Whisper 的断句,专业词汇都非常准,时间数量表示的非常准确。

    • 家园 准备12G硬盘最少。... 吓退了

      微软股沟什么的语音转换的不好用么?手机上有app, 网页版也可以。

    • 家园 讯飞

      可以关注一下,我现在手机都是语音输入的。

      但是苹果手机没有讯飞语记,不方便。

    • 家园 大佬,微信也有语音转换文字功能

      偶然发现的。第一次用的时候惊为天人。有时有个别汉字出错。你了解一下。做下对比分析,让我这样IT小白开开眼。

分页树展主题 · 全看


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河