openai whisper 语音转文字尝鲜

news2024/11/24 2:47:58

最近大模型很火,也试试搭一下,这个是openai 开源的whisper,用来语音转文字。

安装

按照此文档安装,个人习惯先使用第一个pip命令安装,然后再用第二个安装剩下的依赖(主要是tiktoken)

https://github.com/openai/whisper?tab=readme-ov-file

pip install -U openai-whisper #安装pypi包(这个缺少tiktoken
pip install git+https://github.com/openai/whisper.git  #安装最新更新以及依赖
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git #更新用这个

安装ffmpeg,转码用

# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg

测试模型

默认模型是base,模型和需要的显存大小是
在这里插入图片描述

(base) ubuntu@ip-10-0-29-42:~$ time whisper 1.mp4
wDetecting language using up to the first 30 seconds. Use --language to specify the language
Detected language: Chinese
在这里插入图片描述
使用 --model 指定模型,这里使用最大的模型

(base) ubuntu@ip-10-0-29-42:~$ time whisper 1.mp4 --model large

Detecting language using up to the first 30 seconds. Use --language to specify the language
Detected language: Chinese在这里插入图片描述
大模型的显存占用如下:
在这里插入图片描述
这个默认使用cuda 进行,但是并不支持Apple Silicon的MPS。

从htop看还是使用的CPU进行的推理,受用–device mps也不支持。
在这里插入图片描述

脚本清洗

然后使用脚本清洗出现的时间线以及多出来的空格换行。

def remove_timestamps_and_empty_lines(input_file_path, output_file_path):
    # Read the file
    with open(input_file_path, "r", encoding="utf-8") as file:
        lines = file.readlines()

    # Remove the timestamp from each line and filter out empty lines
    cleaned_lines = [
        line.strip().split("] ", 1)[-1].strip()  # Split and remove the timestamp
        for line in lines if "] " in line and line.strip().split("] ", 1)[-1].strip()  # Check if there is text after removing timestamp
    ]

    # Write the cleaned, non-empty lines to a new file
    with open(output_file_path, "w", encoding="utf-8") as file:
        file.write(",".join(cleaned_lines))

# Example usage
input_file_path = '1.txt'  # Specify the path to your input file
output_file_path = '2.txt'  # Specify the path to your output file

remove_timestamps_and_empty_lines(input_file_path, output_file_path)

利用Apple Silicon

为了不浪费Apple Silicon的性能,查了youtube发现一个可以使用Apple 显存进行加速的项目。https://www.youtube.com/watch?v=lPg9NbFrFPI

Github如下:
https://github.com/ggerganov/whisper.cpp

安装如下:

# Install Python dependencies needed for the creation of the Core ML model:
pip install ane_transformers
pip install openai-whisper
pip install coremltools


# using Makefile
make clean
WHISPER_COREML=1 make -j

### 下载模型
make base
### Generate a Core ML model.
./models/generate-coreml-model.sh base

# This will generate the folder models/ggml-base.en-encoder.mlmodelc  

各个模型的显存占用与模型大小:在这里插入图片描述
同样推理一个两个半小时的视频,时间如下:

# 先用ffmpeg转码
ffmpeg -i 1.mp4 -ar 16000 -ac 1 output.wav

# 执行ggml-{model}.bin
time ./main -m models/ggml-base.bin -l zh -osrt -f 'output.wav'

这个视频在Tesla T4的卡上base模型要17分钟,large 1小时。(传统wispper)

Tiny:210S

在这里插入图片描述

base:301S

在这里插入图片描述

large V3:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1611693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

paho-mqtt 库揭秘

文章目录 **paho-mqtt 库揭秘**第一部分:背景介绍第二部分:paho-mqtt 是什么?第三部分:如何安装这个库?第四部分:库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第七部…

【海思Hi3516CV610】是面向新一代视频编解码标准、网络安全和隐私保护、人工智能行业应用方面的IPC SoC

海思Hi3516CV610是面向新一代视频编解码标准、网络安全和隐私保护、人工智能行业应用方面的IPC SoC,除了开发普通摄像机,还可以打造极具竞争力的枪球一体机、双目长短焦摄像机产品; 处理器内核: 支持ARM Cortex-A7 MP2 时钟速率950MHz 支持…

[Linux][进程信号][二][信号如何被保存][信号处理][可重入函数]详细解读

目录 1.信号如何被保存?1.信号其他相关常见概念2.信号在内核中的表示3.sigset_t -- 本质是个位图4.信号集操作函数sigset_t:sigprocmask()sigpending() 5.思考6.使用 2.信号处理0.内核态和用户态1.内核空间和用户空间2.信号何时被处理?3.信号…

Python | Leetcode Python题解之第42题接雨水

题目: 题解: class Solution:def trap(self, height: List[int]) -> int:if not height:return 0n len(height)leftMax [height[0]] [0] * (n - 1)for i in range(1, n):leftMax[i] max(leftMax[i - 1], height[i])rightMax [0] * (n - 1) [he…

5.Vue项目目录结构

Vue项目目录结构 我们通过Vue命令行工具 npm init vuelatest 创建项目,会出现很多文件及文件夹 .vscode --- VSCode工具的配置文件夹 node_modules --- Vue项目的运行依赖文件夹 public --- 资源文件夹(浏览器图标) src ---…

关于某次授权的大型内网渗透测试(1)

前期渗透: 打点:(任意文件上传) 直接发现头像处任意文件上传,这里直接上传冰蝎即可。 tasklist查看杀软 System Idle Process 0 N/A System …

5.11 mybatis之returnInstanceForEmptyRow作用

文章目录 1. 当returnInstanceForEmptyRowtrue时2 当returnInstanceForEmptyRowfalse时 mybatis的settings配置中有个属性returnInstanceForEmptyRow,该属性新增于mybatis的3.4.2版本,低于此版本不可用。该属性的作用官方解释为:当返回行的所…

npm的配置文件及其路径问题

如何快捷修改.npmrc配置文件? .npmrc文件,就是npm的配置文件所在位置。 当然,寻找这个文件的目的,多数是为了修改.npmrc文件内容。 但npm提供了方便快捷的修改方式,不知道这个文件的位置,其实也是可以修改…

数据赋能(63)——要求:IT部门职责

“要求:IT部门职责”是作为标准的参考内容编写的。 在数据赋能中,IT部门职责在于以提供原始数据核心,确保提供原始数据是真实、及时和完整性,以支持业务赋能的实现。 在数据赋能中,IT部门职责涉及多个方面&#xff0c…

LeetCode刷题总结 | 图论2—深度优先搜索广度优先搜索较为复杂应用

深搜广搜的标准模版在图论1已经整理过了,也整理了几个标准的套模板的题目,这一小节整理一下较为复杂的DFS&BFS应用类问题。 417 太平洋大西洋水流问题(medium) 有一个 m n 的矩形岛屿,与 太平洋 和 大西洋 相邻…

Kafka入门介绍+集群部署+简单使用

Kafka入门介绍集群部署简单使用 简介核心概念Broker(服务节点/实例)Producer(生产者)Topic(主题)Partition(分区)Consumer(消费者)和Consumer Group&#xff…

Java 笔记 03:Java 基础知识,使用 IDEA 创建 Java 项目、设置注释颜色,以及自动生成 JavaDoc

一、前言 记录时间 [2024-04-21] 系列文章简摘: Java 笔记 01:Java 概述,MarkDown 常用语法整理 Java 笔记 02:Java 开发环境的搭建,IDEA / Notepad / JDK 安装及环境配置,编写第一个 Java 程序 本文讲述了…

中国人的谦逊与生俱来

中国人的谦逊是与生俱来的,我们从老子的《道德经》就能探知一二: 一、不自夸、不自傲 《道德经》原文:自见者不明;自是者不彰;自伐者无功;自矜者不长。(第二十四章) 译文&#xff…

【深度学习】写实转漫画——CycleGAN原理解析

1、前言 上一篇,我们讲解了按照指定文本标签生成对应图像的CGAN。本篇文章,我们讲CycleGAN。这个模型可以对图像风格进行转化,并且训练还是在非配对的训练集上面进行的,实用性挺大 原论文:Unpaired Image-to-Image T…

Matlab|含sop的配电网重构(含风光|可多时段拓展)

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 之前分享了很多配电网重构的程序,每个程序针对场景限定性比较大,程序初学者修改起来难度较大,本次分享一个基础程序,针对含sop的配电网重构模型,含风电和光伏&am…

FPGA - 基于自定义AXI FULL总线的PS和PL交互

前言 在FPGA - ZYNQ 基于Axi_Lite的PS和PL交互中,介绍了基于基于AXi_Lite的PL和PS交互,接下来构建基于基于Axi_Lite的PS和PL交互。 AXI_GP、AXI_HP和AXI_ACP接口 首先看一下ZYNQ SoC的系统框图,如下图所示。在图中,箭头方向代表…

【LeetCode】100、相同的树

100、相同的树 文章目录 一、DFS1.1 DFS 二、多语言解法 一、DFS 因为判断【相同的树】,是一个公用的子问题,所以可以递归判断节点的左、右孩子。 1.1 DFS func isSameTree(p *TreeNode, q *TreeNode) bool {if p nil && q nil {return tru…

2024蓝桥杯嵌入式模板代码详解

文章目录 一、STM32CubeMx配置二、LED模板代码三、LCD模板代码 一、STM32CubeMx配置 打开STM32CubeMx,选择【File】->【New Project】,进入芯片选择界面,搜索到蓝桥杯官方的芯片型号,并点击收藏,下次直接点击收藏就…

【C++提高】常用容器

常用容器 引言:迭代器的使用一、vector容器1. vector基本概念2. vector的迭代器3. vector构造函数4. vector赋值操作5. vector容量和大小6. vector插入和删除7. vector数据存取8. vector互换容器9. vector预留空间 二、deque容器1. deque容器的基本概念2. deque容器…

leetcode:438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 输入: s "cbaebabacd", p "…