本文主要是介绍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 真棒!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!