Index
引言
2023年,IT领域的焦点无疑是ChatGPT,然而,同属OpenAI的开源产品Whisper似乎鲜少引起足够的注意。
Whisper是一款自动语音识别系统,可以识别来自99种不同语言的语音并将其转录为文字。
如果说ChatGPT为计算机赋予了大脑,那么Whisper则为其赋予了耳朵。
想象一下,在企业应用领域,我们能够利用Whisper将语音转化为文字,然后再借助ChatGPT来进行翻译或总结。
接下来,我们将以实际操作为出发点,逐步向您介绍如何利用AI实现音频、视频的内容总结。
前期准备
GPU
首先,我们需要解决硬件方面的问题。
虽然OpenAI提供了HTTP API来调用Whisper,但对于企业而言,将内部内容交给OpenAI始终存在一定的安全风险。
本地运行AI模型则需要大量的计算资源。
如果仅使用CPU进行计算,一个大约10分钟的语音转录任务可能需要花费4倍以上的时间。
因此,我们必须引入GPU进行计算加速。
考虑到Colab在国内无法访问,我们建议在Kaggle上运行演示。
请大家注册Kaggle账户,并完成手机号验证(Kaggle的GPU需要完成手机号验证后才能使用)。
Azure ChatGPT
ChatGPT是我们语音内容总结的核心工具。
我们建议使用Azure OpenAI服务。
您可以参考以下文章来申请:Azure OpenAI Service申请教程
kintone
kintone是我们用来存储记录的平台。我们需要创建一个名为“Reports”的应用程序(APP),并定义以下表单字段:
名称 | 字段类型 | code | 备注 |
---|---|---|---|
title | 单行文本框 | title | 标题 |
summary | 多行文本框 | summary | 总结 |
最后,我们需要发布一个具有添加记录权限的API令牌,以便将记录存储到kintone中。
运行
点击“open in kaggle”。
请按照以下步骤操作:
1.点击Edit,进入编辑状态
2.在右侧的Notebook options中,我们需要将Acceleator选为GPU T4*2
注:
没验证手机的账户不会显示Acceleator选项。
GPU P100不支持当前默认float16运算,选择该显卡的用户请将“语音转录&对齐”中的compute_type设为float32。
TPU尚未测试支持。
3.找到名为“Azure OpanAI ChatGPT 总结”和“将总结内容上传”的代码单元(cell),然后根据您自己的环境设置进行配置。
4.点击页面上方的“Run All”按钮以开始运行演示。
等待程序运行结束即可。
下面我将对会每个代码单元的功能进行简要说明,感兴趣的可以继续往下研究:
安装依赖
这个部分负责安装所需的第三方库,这可能需要一些时间。
下载视频,或上传您自己的文件
在这一步,您可以选择默认的YouTube上的kintone宣传案例视频,
或者更改URL以使用其他视频,
也可以上传您自己的音/视频文件到相应的工作目录。
预处理工作目录中的最新音/视频文件
此步骤将提取工作目录中最新的.mp4或.wav文件,
将人声从背景音中分离出来,并将音频采样率转换为16000Hz。
语音转录和对齐
在这一步,语音将被转录成带有时间戳的文本,并使用Wav2Vec进行对齐。
说话人分类(Nemo分类)
这一步是说话人分类,根据语音特征将不同时间段的语音进行分类。
通常有两个常用工具,即PyAnnote和Nvidia的Nemo。
在本演示中,我们选择了Nvidia的Nemo ASR来进行分类,因为它具有更多的参数选择,并相对容易调试。
合并
在这一步中,我们需要将“speakers”中的说话人信息按说话时间顺序输入人名。
Nemo生成的RTTM文件中的说话人信息和Whisper转录的语音信息需要一一对应。
由于存在一定的误差,我们使用最近交集和覆盖率算法来计算说话人和文字的匹配度。
Azure OpenAI ChatGPT 总结
在这一步中,说话人和文字将被输入ChatGPT进行总结。
需要注意的是,ChatGPT的上下文长度有限制,而不同模型的费用也不同。
我们建议使用gpt-3.5-turbo-16k模型。
如果音视频内容超过最大token数,程序会发出警告,请自行进行调整。
上传总结内容
最后,将生成的总结内容上传到kintone,包括相应的标题和总结。