客服场景跟AI和whisper结合
背景
现实世界,人跟人的沟通相当一部分是语音沟通,比如打电话,聊天中发送语音消息。
而在程序的世界,大部分以处理字符串为主。
所以,把语音转换成文字就成为了编程世界非常普遍的需求。
Whisper 是由 OpenAI 开发的一种高效的语音识别(ASR)技术,旨在将人类的语音转换成文本。
该模型通过大量的语音数据训练而成,能够识别并转写多种语言和方言中的语音。
以下是 Whisper 的一些主要使用场景和它能解决的问题:
使用场景自动字幕生成:对于视频内容制作者而言,Whisper 可以自动生成字幕,加速视频制作过程,提高内容的可访问性和理解度。会议记录:在商务和学术会议中自动记录和转写发言,节省人工记录的时间,确保信息的准确性和完整性。教育应用:教师可以利用 Whisper 来转写课程内容,为学生提供书面材料,帮助学习和复习。语音助手和聊天机器人:提升语音助手的理解能力,使其能更准确地理解用户的指令,提供相关服务或答案。无障碍技术:帮助听力受损的人士通过文本实现对话理解,提高他们的沟通能力和生活质量。内容分析:自动转写的文本可以用于内容分析,比如情绪分析、关键词提取或主题识别,进而提供内容推荐、概要生成等服务。
我当前从事的领域为全球客服,应用场景主要是:
内容分析:
客服管理人员快捷查看语言转成的文本内容,把数据喂给AI,进行服务质量评估和概要提取,方便对客服人员客观评价,方便管理。
语音助手和聊天机器人:
主流需求是小客户希望提供AI机器人+少量真人客服,即聊天机器人服务。
解决的问题
通过这些使用场景和解决的问题可以看出,Whisper 作为一个先进的语音识别技术,能够在多个领域带来实质性的改进和便利。
全球客服业务场景下要解决的问题主要有:
多语言和方言的识别:
我们提供了多语种的客服,每个语种其实也有方言的差别,比如英语分美式英语和中式英语,还有各种俚语。
嘈杂环境下的语音识别:
客服客人的语音沟通可能在弱网环境或者噪音环境,需要提高准确度。
节省时间和成本:
如何评估客服的工作质量,提高管理水平,提高甲方的满意度,以前是靠抽查录音,现在是借助转文本+AI检查和概要提取,节约了大量的时间。
目标
假设你在做一个全球客服平台,解决客服服务过程中的问题,提高他们的效率和智能化。那么语音转文本的能力也是标配的。
概括一下,我们期望使用语音转文本达成哪些业务目标。
内部管理角度:
提高科学评估客服服务质量的效率。
客服角度:
提高客服的服务质量,通过积累的语音转换的文字,识别客人的意图,情绪,提供辅助。
新业务形态支持:
AI语音客服+少量真人客服,是现在小微客户的普遍诉求。
whisper介绍对比选型
在选定whisper之前,我也对比了开源和商用的各种解决方案。
以下是对比维度的表格概览:
对比维度
然后要提到的要点就是,转文服务需要GPU, 在云计算厂商购买含有GPU的服务器,最便宜一个月都要4000一个月起。
我们有分公司在海外,比如美国,有自建机房,可以自行购买高配置显卡,搭建服务器,
这块费用相比于云厂商来说有优势。就是程序的安装,维护,对接需要时间去设计,开发,调试。
简要介绍
项目中现在落地实践的是whisper, 一个语音转文本的组件。
whisper 音译: 耳语
定位: 基于大规模弱监督的鲁棒语音识别
鲁棒解释一下: 在IT行业中,“鲁棒性”(Robustness)通常指的是一个系统、网络、软件或硬件在面对错误输入、异常条件或某些意外状况下仍能保持其功能和性能的能力。
鲁棒性强的系统能够处理错误、适应环境的变化,并在面对意外挑战时仍维持运行,而不会崩溃或者产生不可预测的行为。
它是github上是openai公司开源的一个项目。 开发语言是python .
地址:github的主域名 + openai/whisper
官方的文档使用场景描述: Whisper是一个通用的语音识别模型。
它经过大量多样化音频数据的训练,并且还是一个多任务模型,可以进行多语言语音识别、语音翻译和语言识别。
处理流程或者模型图如下:
处理流程体系结构 whisper
图中是whipser的处理过程。我标了4个小点,简单对齐一下:
1 训练数据whisper采用多任务的训练的数据,对噪音或者背景音乐做了特化处理,支持各种语言,时长68万个小时。2 log-Meilog-Mei Spectrogram 介绍:
log-Mel Spectrogram 是一种在语音处理中常用的特征表示方法,特别是在语音识别与分析任务中。它是Mel频谱(Mel Spectrogram)的对数版本,通常能更好地匹配人类的听觉感知特性,因为Mel刻度是对频率进行非线性变换,以模拟人耳对不同频率的响应。
解释结合场景
在使用OpenAI的Whisper项目进行语音转文本任务时,log-Mel Spectrogram 可能作为语音信号的输入前处理步骤。Whisper 的模型在训练前会将语音信号转换成这种格式,因为它可以有效地捕捉到对于语音识别至关重要的特征,并降低环境噪音和其他不相关变量的影响。
Whisper的使用
在Whisper模型中,如果你想要处理音频文件进行语音识别,流程可能如下:
预处理:音频信号首先会被转换成log-Mel Spectrogram。这包括采样、窗函数应用、FFT、Mel滤波器组应用,最后获取对数Mel能量。模型输入:得到的log-Mel Spectrogram会被提供给模型作为输入特征。模型预测:Whisper模型会根据输入的Spectrogram进行编码、解码等操作,最后输出文本。后处理:输出的文本可能会经过一些后处理步骤以提高可读性或准确性,比如标点符号的添加,去除语言模型的偏差等。核心要点归纳3 多任务训练
“tokens in multitask training format” 在使用像 Whisper 这样的模型时,
引用的是如何在训练阶段以一种格式化的方式组织和表示数据,使得模型能同时学习多个任务。
多任务训练(Multitask Training)是机器学习中的一种技术,
旨在通过同时训练一个模型来执行多个相关任务,以达到提高总体性能和效率的目的。
在 Whisper 项目的背景下,这意味着模型不仅被训练用以转换语音到文本,
还可能包括其他任务,比如语言识别、情感分析等。
如何利用 Tokens 进行多任务训练
在多任务训练中,一个关键的挑战是如何在模型内部表示不同的任务,
以及如何向模型指示当前的输入数据对应于哪个特定任务。
这是通过使用特定的“tokens”来实现的,这些 tokens 作为数据输入的一部分,
用来指示模型当前处理的是哪种任务。
以 Whisper 为例,如果它被设计为处理多种任务(例如,同时进行语音识别和语言检测),
那么训练数据可能被格式化为包含特殊 tokens 的序列,
这些 tokens 明确指出每个数据样本的任务。
例如:
紧接着是转换成 log-Mel Spectrogram 的原始语音数据。
Whisper 项目中的实际应用
虽然 Whisper 主要聚焦于将语音转换为文本,
但是将它想象成一个多任务学习的框架不难。
在这种情况下,训练数据将需要按照上述方式进行组织,
使得模型能够区分不同任务的数据并相应地调整其内部表示和输出。
多任务训练的好处包括:
模型的不同部分可以学习到在多个任务中通用的表示和特征,从而提高整体性能。
通过同时训练多个任务,可以节约时间和计算资源,相比单独训练每个任务。
虽然此说明提供了一个理论框架,目前 Whisper 主要专注于语音到文本的转换,
但未来的版本或者其他类似项目可能会探索多任务学习的潜力,
从而扩展其应用范围和提高效率。
一个Transformer序列到序列模型被训练用于各种语音处理任务,
包括多语言语音识别、语音翻译、口语识别和声活动检测。
这些任务被联合表示为一系列由解码器预测的标记,
使得单个模型能够替代传统语音处理流程中的许多阶段。
多任务训练格式使用一组特殊的标记作为任务指示符或分类目标。
4 多任务训练格式拆解
想象一下,你在一个厨房里,你需要同时煮面条、煎鸡蛋和煮咖啡。
如果你一次只做一件事,那么要完成所有工作可能需要很长时间。
但是,如果你能学会同时处理这三件事,你就可以在更短的时间内做完。这就是所谓的“多任务处理”。
在Whisper项目中,这个比喻类似于我们让计算机学习如何同时处理多种语音相关的任务。
Whisper是一个被设计用来听懂人说的话并把它们写下来的程序。
现在,假设我们不仅想要它写下话,还想要它识别说话的人使用的是哪种语言,
甚至可能想要它能理解说话的人的感情状态。
为了让Whisper学会这些技能,我们需要采用一种特殊的训练方式,
即“多任务训练”。就像你需要知道何时该煮面条、煎鸡蛋、煮咖啡一样,
Whisper也需要知道它是在把语音转换成文本,还是在识别语言或感情。
我们是通过添加一些特别的标记或者符号(也就是“tokens”)来告诉它的。
这些标记好比是一个信号,告诉Whisper现在应该用它的哪一部分技能。
这样的训练方式可以让Whisper更加聪明,它不仅可以更好地完成每一项任务,
还可以学习到一些在所有任务中都有用的东西。
最终,它能更快更好地帮助我们处理语音,
就像一个经验丰富的厨师能够轻松地同时处理多道菜一样。
安装步骤好的,让我们来梳理一下上面提供的安装说明,并假设你是一名开发人员。
以下是你需要按照顺序执行的步骤,以确保Whisper能够正确安装在你的系统上。
安装环境准备确认Python版本:确保你的系统中安装了 Python 3.9.9。确认PyTorch版本:你需要安装或者确认已安装 PyTorch 1.10.1 或其最新版本。你可以访问 PyTorch 官网来获取安装指南。安装rust :
如果在安装过程中遇到tiktoken的问题,可能需要安装 Rust。
可以根据 Rust 官方的开始页面进行安装,并且可能需要将 Rust 的路径添加到系统的 PATH 环境变量中,例如:
export PATH=”$HOME/.cargo/bin:$PATH”
如果你发现了类似“No module named 'setuptools_rust'”的安装错误,你需要安装 setuptools_rust:
pip install setuptools-rust
4.安装FFmpeg 。这是对不同操作系统的安装说明:
sudo apt update && sudo apt install ffmpeg
sudo pacman -S ffmpeg
5 .安装 Whisper
安装Whisper:通过pip安装Whisper的最新版本,使用以下命令:
pip install -U openai-whisper
或者,如果你想直接从GitHub安装最新的代码库,可以使用以下命令:
pip install git+
如果你需要更新Whisper,可以使用:
pip install –upgrade –no-deps –force-reinstall git+
安装小结
概括来说,安装Whisper需要你确保 Python 和 PyTorch 环境的正确设置,
使用pip命令安装Whisper本身,确保系统中安装了 FFmpeg(用于处理音频文件),
以及可能需要的 Rust(对于一些底层编译处理)。
在安装过程中,遇到任何问题可以参考官方文档或者搜索相应的错误信息来找到解决方案。
支持的模型和语言
有五种模型,其中四种提供了英文版本,英文版本的模型提供了速度和准确性的权衡。
下面是可用模型的名称及其相对于大型模型的大致显存需求和推理速度;
实际速度可能取决于许多因素,包括可用的硬件。
纯英语应用程序的.en模型往往表现得更好,尤其是对于小型应用程序。
在模型。我们观察到,小的模型显存差异变得不那么显著。
在模型选择上的表现也因语言有差异。
下面是对比表格:
模型和处理速度对比
Whisper支持多达100多种语言的语音识别,在 tokenizer.py 文件中列举出来了所有支持的语言 ,其中包括但不限于以下语言:
名词定义:
WER: 单词错误率
CER: 字符错误率
Common Voice 15和Fleurs数据集是两个语音及语言数据集,它们是用来训练和评估语音识别技术如Whisper等模型的工具
下图显示了按语言划分的large-v3和large-v2模型的性能分解,使用了在Common Voice 15和Fleurs数据集上评估的WER(单词错误率)或CER(字符错误率)
这个图说明对主流语言的错误率比较低。 后面随着版本是升级这个错误率会进一步降低。
转换错误率对比
命令行使用
假设我是一名开发人员,基于Whisper的官方文档,
以下是如何使用命令行来操作Whisper模型进行语音转录和翻译的概括:
语音转录选择模型:
可以通过–model参数来指定使用哪个预训练模型。
例如,–model medium会选择中等大小的模型进行转录。
如果不指定模型,Whisper默认会使用小模型,这在转录英语时通常效果不错。
whisper audio.flac –model medium
指定语言:
若要转录非英语的音频,可以使用–language参数指定语言代码。
例如,–language Japanese指令会让模型知道输入文件是日语。
whisper japanese.wav –language Japanese
转录与翻译:
如果你需要将非英语的语音内容转录并翻译成英语,可以通过添加–task translate参数来实现。
whisper japanese.wav –language Japanese –task translate
支持的文件格式:
Whisper支持多种音频文件格式,包括.flac、.mp3和.wav等。
在命令行中,直接指定文件名和格式即可。
whisper audio.flac
whisper audio.mp3
whisper audio.wav –model medium
获取帮助:
若需要查看Whisper支持的所有参数选项,可以使用whisper –help命令。
whisper –help
通过上述概括,
可以理解Whisper提供了灵活的命令行界面来转录和翻译语音文件。
作为开发人员,可以根据实际需要选择合适的模型、指定语言,甚至执行翻译任务,
以适应不同的应用场景和需求。
此外,通过查阅帮助文档可以更加深入地了解不同的命令行选项,从而充分利用Whisper模型的功能。
python使用方式
简单使用:
import whisper
model = whisper.load_model(“base”)
result = model.transcribe(“audio.mp3”)
print(result[“text”])
精细化使用:
import whisper
model = whisper.load_model(“base”)
# load audio and pad/trim it to fit 30 seconds
audio = whisper.load_audio(“audio.mp3”)
audio = whisper.pad_or_trim(audio)
# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to(model.device)
# detect the spoken language
_, probs = model.detect_language(mel)
print(f”Detected language: {max(probs, key=probs.get)}”)
# decode the audio
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)
# print the recognized text
print(result.text)
使用python有优势,就是它的主框架是python写的,
部分场景可以直接调整python代码,修改主框架。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777