OpenAI 开源的语音技术 Whisper 真棒!!!

2024-06-19 01:52

本文主要是介绍OpenAI 开源的语音技术 Whisper 真棒!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。

针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。

合集:

《大模型面试宝典》(2024版) 正式发布!
《AIGC 面试宝典》已圈粉无数!


在处理音频识别和翻译时,我们经常面临多样化的音频数据和处理多种语言的难题。传统的音频处理方法通常步骤繁杂,各个处理阶段的结果往往需要手动衔接和微调。

一个高效的自动语音识别(ASR)系统对于全球通讯和语言支持工具是极其关键的,尤其是在智能语音助手和电话语音翻译等领域。

然而,开发一个适用于广泛任务的模型,比如能够处理多种语言、进行语音翻译和语言识别,这仍是一个挑战。本篇文章Whisper,可能就是针对这些问题的新答案。

什么是 Whisper?

Whisper 是一个多功能的语音识别模型,通过从网络上收集了 68 万小时的多语言(98 种语言)和多任务(multitask)监督数据对 Whisper 进行了训练,能够执行包括多种语言的语音识别、语音翻译以及语言辨识等多项任务。

该项目的核心之处在于使用了一种基于Transformer架构的序列到序列模型来训练处理不同的语音任务,并通过解码器来预测代表各种任务的特定标记(token),这一过程有望取代传统音频处理中的多个步骤,并实现对多任务的同时训练。

Whisper 提供5种模型以及英文单一版本来实现速度和精度的权衡,适应不同的需求。

开源项目地址:https://github.com/openai/whisper

如何使用

在 Python 3.9.9 和 PyTorch 1.10.1 环境下进行操作,同时需要依赖openAI’s tiktoken 包来进行快速的标记(tokenize)处理。安装方式如下命令:

pip install -U openai-whisper

更新到最新版本的命令如下:

pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git

需要注意的是,这个项目还要求在系统上安装了命令行工具 ffmpeg,如果在安装过程中出现错误,可能需要安装 Rust 开发环境。安装好以后,以下是一个最简单的使用示例:

import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

在实际应用中我们可以把它封装成API的接口通过HTTP的方式来调用,我们可以使用python的高性能的框架Fast API。

我们可以通过FastAPI的UPload File来实现上传音频文件

# FastAPI使用async/await提升并发性能
async def api_recognition(audio: UploadFile = File(..., description="audio file")):content = await audio.read()

模型默认使用的wav的音频格式,这个时候就需要使用到FFmpeg来对音频进行转换。可以使用到pydub库中的AudioSegment方法对音频进行转换,也是通过调用FFmpeg来进行实现的,感兴趣的同学可以自行了解。

sound = AudioSegment.from_file(io.BytesIO(content))
# 将音频导出为wav格式,参数为FFmpeg对应的参数
# -ar rate        set audio sampling rate (in Hz) 
# -ac channels    set number of audio channels
wav  = sound.export(format="wav",parameters=["-ac","1","-ar","16000"]) 

该模型支持的输入格式为:str, np.ndarray, torch.Tensor三种

audio: Union[str, np.ndarray, torch.Tensor]

这时我们需要将刚刚的音频字节流转换为np.ndarray格式,这里可以使用soundfile的read方法

我们可以使用curl来进行测试:

# curl -X POST -F "audio=@test.wav" http://127.0.0.1:8000/recognition
{"results":"支付宝到账 100万元","code":0}

完整示例代码

import whisper
from pydub import AudioSegment
import soundfile
import iomodel = whisper.load_model("base",download_root="./.cache/whisper")import uvicorn
from fastapi import FastAPI, File, UploadFile
app = FastAPI(title="whisper")@app.post("/recognition")
async def api_recognition(audio: UploadFile = File(..., description="audio file")):content = await audio.read()sound = AudioSegment.from_file(io.BytesIO(content))wav  = sound.export(format="wav",parameters=["-ac","1","-ar","16000"])speech, _ = soundfile.read(wav,dtype="float32")rec_result = model.transcribe(speech)ret = {"results": rec_result['text'], "code": 0}return retif __name__ == '__main__':uvicorn.run("example-whisper:app",host="0.0.0.0",workers=1)

总结

Whisper是OpenAI 发布的语音处理系统,在github拥有众多的追随者,此项目基于大规模弱监督的方法进行训练,为研究人员提供重要的研究工具,同时也为行业开发者提供了实用的开发工具,可以广泛应用于各种语音识别需求。

Whisper在处理不同语言方面展现出了卓越的性能,这与当前多样化和多任务处理的趋势相契合。该项目目前正处于积极开发阶段,并持续吸纳社区的意见和贡献,这使得它非常值得我们关注和尝试。

这篇关于OpenAI 开源的语音技术 Whisper 真棒!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073674

相关文章

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音