ChatGPT开源的whisper音频生成字幕

1、前言

好了,那接下来看一下whisper开源库的介绍

image.png

有五种模型大小,其中四种仅支持英语,提供速度和准确性的权衡。上面便是可用模型的名称、大致的内存需求和相对速度。如果是英文版的语音,直接想转换为英文。

本来我是想直接在我的本地电脑上安装环境的,也就是无非安装python、ffmpeg、以及whisper,但是发现电脑配置太低了,而且我想测试一下large模型,CPU 肯定是不行,但是如果用本机的 GPU也是快不到哪里去的。 所以这里我想到谷歌的colab.research.google.com 免费在线运行,而且我可以启用GPU硬件加速,感觉上还是非常快的,当然如果需要你还可以购买。

image.png

下面是我的免费配置 colab.research.google.com

image.png

运行起来还是非常流畅,真的香喷喷,如果需要我都想付费了。

可以应用于那些场景

  • 会议记录: 直接将录音转换为文字

  • 个人视频制作: 很多时候都希望有字幕的效果,听说剪映的效果都没有这个好

  • 课堂记录转写:将课堂上的内容记录下来,这样后面直接查看文字版本也是非常方便

  • 通话记录:有些重要的电话可将其录音,转换为文字以备后面查询也是非常不错的

  • 字幕组:这个就不用说了 有可能还涉及到多语言,准备率很高的话 可以省很多事情

  • 实时语音翻译:这个服务器配置够高的话,理论上就非常快速

2、开始实践

2.1、检查colab环境

!nvidia-smi -L
!nvidia-smi

运行两个指令结果如下:

image.png

1.!nvidia-smi -L-L 参数用于列出系统上安装的所有 NVIDIA GPU 设备。运行此命令后,您将看到关于可用 GPU 的信息,包括其型号和 UUID。

2.!nvidia-smi:不带任何参数运行 nvidia-smi 会显示有关 NVIDIA GPU 的详细信息,包括:

    • GPU 设备的编号、名称、总内存和温度。
    • GPU 使用率(如计算、内存和显存使用率)。
    • 运行在 GPU 上的进程以及它们的相关信息(如进程 ID、显存占用等)。

只不过这里我还没开始使用GPU而已,所以显示的是空的。

2.2、安装whisper

!pip install requests beautifulsoup4
!pip install git+https://github.com/openai/whisper.git
import torch
import sys
device = torch.device('cuda:0')
print('正在使用的设备:', device, file=sys.stderr)
print('Whisper已经被安装请执行下一个单元')

这里主要就是安装whisper

image.png

2.3、 whisper模型选择

#@markdown # ** whisper Model选择** 🧠
Model = 'large-v2' #@param ['tiny.en', 'tiny', 'base.en', 'base', 'small.en', 'small', 'medium.en', 'medium', 'large', 'large-v2']
import whisper
from IPython.display import Markdown
whisper_model = whisper.load_model(Model)
if Model in whisper.available_models():
    display(Markdown(
        f"**{Model} model is selected.**"
    ))
else:
    display(Markdown(
        f"**{Model} model is no longer available.** Please select one of the following: - {' - '.join(whisper.available_models())}"
    ))

这里我选择的是最大的模型 large-v2,因为我要转换中文字幕,前面四个都只支持英文,这个在文章开头也说了的。

2.4、 开始音频转字幕

audio_path = "/content/downloads/test1.m4a"
audio_path_local = Path(audio_path).resolve()
transcription = whisper.transcribe(
    whisper_model,
    str(audio_path_local),
    temperature=temperature,
    **args,
)
# Save output
whisper.utils.get_writer(
    output_format=output_format,
    output_dir=audio_path_local.parent
)(
    transcription,
    title
)

我首先要准备一个m4a的音频文件,这里可以直接上传到colab

image.png

左侧当前目录是 content,然后右键新建文件夹downloads,然后在downloads文件夹上点击上传m4a文件

image.png

上传完毕后可以看到m4a文件已经在目录下了。

whisper.transcribe 方法有好多的参数

  • whisper_model主要是设置model模型
  • output_format 主要是设置字幕输出的文件格式
  • temperature 值设置的较低,那么表述相对精准一些,值越大表述可能更加抽象一点
  • args中有一个language语言,比如这里我要将音频转换为中文字幕 设置为cn 或者chinese这里主要可以查看 whisper/tokenizer.py at main · openai/whisper · GitHub

image.png

2.4、运行查看效果

点击运行后可以看到一段一段的在执行转换了,整体感觉运行还是非常流畅了,这比看别人在本地运行速度可是快多了

image.png

最后可以看到srt字幕文件也已经生成了,可以直接点击左侧文件点击下载即可。 生成的srt文件如下

image.png

3、总结

这个whisper相当于离线版本,可以自己部署到本地或者服务器提供给自己使用,相信后续OpenAI应该还会有更新,提供更多精彩的功能使用。

from:

5、ChatGPT开源的whisper音频生成字幕,可本地搭建环境运行,效果质量很棒-阿里云开发者社区

kkview远程控制 手机电脑看屏幕和摄像头

### Python 音频字幕生成库和工具 在处理音频字幕的转换过程中,通常涉及语音识别技术以及时间轴标记功能。以下是几个常用的 Python 库和工具来完成这一任务: #### 1. SpeechRecognition `SpeechRecognition` 是一个流行的 Python 库,用于执行语音识别操作。它支持多种语音识别引擎和服务,包括 Google Web Speech API 和 Sphinx 等本地解决方案[^4]。 安装方法如下: ```bash pip install SpeechRecognition ``` 示例代码展示如何将音频文件转换为文本: ```python import speech_recognition as sr def transcribe_audio(file_path): recognizer = sr.Recognizer() with sr.AudioFile(file_path) as source: audio_data = recognizer.record(source) text = recognizer.recognize_google(audio_data, language="en-US") # 使用Google服务 return text audio_file = "example.wav" transcribed_text = transcribe_audio(audio_file) print(transcribed_text) ``` #### 2. pydub 虽然 `pydub` 不直接提供语音识别能力,但它是一个强大的音频处理库,可以与其他语音识别库结合使用以分割音频片段并为其分配时间戳[^5]。 安装命令: ```bash pip install pydub ffmpeg-python ``` 通过以下方式加载音频并与 `SpeechRecognition` 结合使用: ```python from pydub import AudioSegment from pydub.silence import split_on_silence import speech_recognition as sr def process_audio_with_pydub_and_sr(file_path): sound = AudioSegment.from_wav(file_path) chunks = split_on_silence(sound, min_silence_len=500, silence_thresh=-40) recognizer = sr.Recognizer() results = [] for i, chunk in enumerate(chunks): export_path = f"chunk{i}.wav" chunk.export(export_path, format="wav") with sr.AudioFile(export_path) as source: audio_data = recognizer.record(source) try: text = recognizer.recognize_google(audio_data, language="en-US") results.append({"text": text, "start_time": (i * 5), "end_time": ((i + 1) * 5)}) except sr.UnknownValueError: pass return results processed_chunks = process_audio_with_pydub_and_sr("example.wav") for item in processed_chunks: print(f"{item['start_time']} -> {item['end_time']}: {item['text']}") ``` #### 3. Whisper 由 OpenAI 开发的 `Whisper` 是一种先进的自动语音识别模型,能够高效地将音频转化为高质量的文字,并且还提供了多语言支持和时间戳选项[^6]。 安装步骤: ```bash pip install git+https://github.com/openai/whisper.git ``` 调用样例如下所示: ```python import whisper model = whisper.load_model("base") result = model.transcribe("example.mp3", fp16=False) print(result["segments"]) # 输出带时间戳的结果 ``` --- ### 总结 上述提到的三种方案各有优劣:如果追求简单易用可以选择基于云的服务如 `SpeechRecognition`;对于更复杂的场景则推荐采用 `pydub` 进行预处理后再送入识别模块;而当需要高精度及时效性保障时,则应考虑部署像 `Whisper` 这样的先进深度学习框架。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值