AIGC: 2 语音转换新纪元-Whisper技术在全球客服领域的创新运用

file

背景

现实世界,人跟人的沟通相当一部分是语音沟通,比如打电话,聊天中发送语音消息。

而在程序的世界,大部分以处理字符串为主。

所以,把语音转换成文字就成为了编程世界非常普遍的需求。

Whisper 是由 OpenAI 开发的一种高效的语音识别(ASR)技术,旨在将人类的语音转换成文本。

该模型通过大量的语音数据训练而成,能够识别并转写多种语言和方言中的语音。

以下是 Whisper 的一些主要使用场景和它能解决的问题:

使用场景

  1. 自动字幕生成:对于视频内容制作者而言,Whisper 可以自动生成字幕,加速视频制作过程,提高内容的可访问性和理解度。
  1. 会议记录:在商务和学术会议中自动记录和转写发言,节省人工记录的时间,确保信息的准确性和完整性。
  1. 教育应用:教师可以利用 Whisper 来转写课程内容,为学生提供书面材料,帮助学习和复习。
  1. 语音助手和聊天机器人:提升语音助手的理解能力,使其能更准确地理解用户的指令,提供相关服务或答案。
  1. 无障碍技术:帮助听力受损的人士通过文本实现对话理解,提高他们的沟通能力和生活质量。
  1. 内容分析:自动转写的文本可以用于内容分析,比如情绪分析、关键词提取或主题识别,进而提供内容推荐、概要生成等服务。

我当前从事的领域为全球客服,应用场景主要是

内容分析

客服管理人员快捷查看语言转成的文本内容,把数据喂给AI,进行服务质量评估和概要提取,方便对客服人员客观评价,方便管理。

语音助手和聊天机器人

主流需求是小客户希望提供AI机器人+少量真人客服,即聊天机器人服务。

解决的问题

  • 多语言和方言的识别:Whisper 能够处理多种语言和方言的转写,这是传统语音识别系统难以达到的。
  • 嘈杂环境下的语音识别:在噪声背景下准确识别语音是一个挑战,Whisper 在这方面表现优异,能够在各种嘈杂环境下准确转写语音。
  • 提高无障碍通讯的可行性:通过为听力受损者提供实时的语音转文本服务,Whisper 提高了他们的沟通能力和社会参与度。
  • 节省时间和成本:自动语音转写技术可以替代人工转写,大幅度节省时间和成本,尤其是在需要处理大量语音数据的场景中。

通过这些使用场景和解决的问题可以看出,Whisper 作为一个先进的语音识别技术,能够在多个领域带来实质性的改进和便利。

全球客服业务场景下要解决的问题主要有:

多语言和方言的识别

我们提供了多语种的客服,每个语种其实也有方言的差别,比如英语分美式英语和中式英语,还有各种俚语。

嘈杂环境下的语音识别

客服客人的语音沟通可能在弱网环境或者噪音环境,需要提高准确度。

节省时间和成本

如何评估客服的工作质量,提高管理水平,提高甲方的满意度,以前是靠抽查录音,现在是借助转文本+AI检查和概要提取,节约了大量的时间。

目标

假设你在做一个全球客服平台,解决客服服务过程中的问题,提高他们的效率和智能化。那么语音转文本的能力也是标配的。

概括一下,我们期望使用语音转文本达成哪些业务目标。

  1. 内部管理角度

提高科学评估客服服务质量的效率。

  1. 客服角度

提高客服的服务质量,通过积累的语音转换的文字,识别客人的意图,情绪,提供辅助。

  1. 新业务形态支持

AI语音客服+少量真人客服,是现在小微客户的普遍诉求。

whisper介绍

对比选型

在选定whisper之前,我也对比了开源和商用的各种解决方案。

以下是对比维度的表格概览:

file

然后要提到的要点就是,转文服务需要GPU, 在云计算厂商购买含有GPU的服务器,最便宜一个月都要4000一个月起。

我们有分公司在海外,比如美国,有自建机房,可以自行购买高配置显卡,搭建服务器,

这块费用相比于云厂商来说有优势。就是程序的安装,维护,对接需要时间去设计,开发,调试。

简要介绍

项目中现在落地实践的是whisper, 一个语音转文本的组件。

whisper 音译: 耳语

定位: 基于大规模弱监督的鲁棒语音识别

鲁棒解释一下: 在IT行业中,“鲁棒性”(Robustness)通常指的是一个系统、网络、软件或硬件在面对错误输入、异常条件或某些意外状况下仍能保持其功能和性能的能力。

鲁棒性强的系统能够处理错误、适应环境的变化,并在面对意外挑战时仍维持运行,而不会崩溃或者产生不可预测的行为。

它是github上是openai公司开源的一个项目。 开发语言是python .

地址:github的主域名 + openai/whisper

官方的文档使用场景描述: Whisper是一个通用的语音识别模型。

它经过大量多样化音频数据的训练,并且还是一个多任务模型,可以进行多语言语音识别、语音翻译和语言识别。

处理流程或者模型图如下:

file

图中是whipser的处理过程。我标了4个小点,简单对齐一下:

1 训练数据

  1. whisper采用多任务的训练的数据,对噪音或者背景音乐做了特化处理,支持各种语言,时长68万个小时。

2 log-Mei

  1. log-Mei Spectrogram 介绍:

log-Mel Spectrogram 是一种在语音处理中常用的特征表示方法,特别是在语音识别与分析任务中。它是Mel频谱(Mel Spectrogram)的对数版本,通常能更好地匹配人类的听觉感知特性,因为Mel刻度是对频率进行非线性变换,以模拟人耳对不同频率的响应。

解释
  • Mel频谱:是通过将FFT(快速傅里叶变换)得到的频谱映射到一个以Mel刻度为单位的频率尺度上得到的。这个尺度基于人耳对不同频率声音的感知能力,低频下更加敏感,而高频的感知能力递减。
  • 对数操作:对Mel频谱应用对数操作(logarithm)进一步改进。这是因为人类的听觉是对声强的对数变化敏感的,即分贝(dB)尺度。因此,应用对数变换后,Spectrogram能更准确地表示声音的感知特征。
结合场景

在使用OpenAI的Whisper项目进行语音转文本任务时,log-Mel Spectrogram 可能作为语音信号的输入前处理步骤。Whisper 的模型在训练前会将语音信号转换成这种格式,因为它可以有效地捕捉到对于语音识别至关重要的特征,并降低环境噪音和其他不相关变量的影响。

Whisper的使用

在Whisper模型中,如果你想要处理音频文件进行语音识别,流程可能如下:

  1. 预处理:音频信号首先会被转换成log-Mel Spectrogram。这包括采样、窗函数应用、FFT、Mel滤波器组应用,最后获取对数Mel能量。
  1. 模型输入:得到的log-Mel Spectrogram会被提供给模型作为输入特征。
  1. 模型预测:Whisper模型会根据输入的Spectrogram进行编码、解码等操作,最后输出文本。
  1. 后处理:输出的文本可能会经过一些后处理步骤以提高可读性或准确性,比如标点符号的添加,去除语言模型的偏差等。
核心要点归纳
  • log-Mel Spectrogram 提供了一种与人类听觉相匹配的特征表示。
  • 适用于语音识别等任务,因为能够有效捕获语音关键特征。
  • Whisper等模型使用这种表示作为输入特征进行训练和预测。
  • 在实际应用中,需要对音频文件进行相应的预处理来得到log-Mel Spectrogram

3 多任务训练

"tokens in multitask training format" 在使用像 Whisper 这样的模型时,

引用的是如何在训练阶段以一种格式化的方式组织和表示数据,使得模型能同时学习多个任务。

多任务训练(Multitask Training)是机器学习中的一种技术,

旨在通过同时训练一个模型来执行多个相关任务,以达到提高总体性能和效率的目的。

在 Whisper 项目的背景下,这意味着模型不仅被训练用以转换语音到文本,

还可能包括其他任务,比如语言识别、情感分析等。

如何利用 Tokens 进行多任务训练

在多任务训练中,一个关键的挑战是如何在模型内部表示不同的任务,

以及如何向模型指示当前的输入数据对应于哪个特定任务。

这是通过使用特定的“tokens”来实现的,这些 tokens 作为数据输入的一部分,

用来指示模型当前处理的是哪种任务。

以 Whisper 为例,如果它被设计为处理多种任务(例如,同时进行语音识别和语言检测),

那么训练数据可能被格式化为包含特殊 tokens 的序列,

这些 tokens 明确指出每个数据样本的任务。

例如:

  • 对于语音识别任务,输入数据可能以 [语音识别] 开头的 token 作为提示,

紧接着是转换成 log-Mel Spectrogram 的原始语音数据。

  • 对于语言识别任务,数据可能以 [语言识别] 开头,后跟相同的语音数据表示。
Whisper 项目中的实际应用

虽然 Whisper 主要聚焦于将语音转换为文本,

但是将它想象成一个多任务学习的框架不难。

在这种情况下,训练数据将需要按照上述方式进行组织,

使得模型能够区分不同任务的数据并相应地调整其内部表示和输出。

多任务训练的好处包括:

  • 知识共享

模型的不同部分可以学习到在多个任务中通用的表示和特征,从而提高整体性能。

  • 效率提高

通过同时训练多个任务,可以节约时间和计算资源,相比单独训练每个任务。

虽然此说明提供了一个理论框架,目前 Whisper 主要专注于语音到文本的转换,

但未来的版本或者其他类似项目可能会探索多任务学习的潜力,

从而扩展其应用范围和提高效率。

一个Transformer序列到序列模型被训练用于各种语音处理任务,

包括多语言语音识别、语音翻译、口语识别和声活动检测。

这些任务被联合表示为一系列由解码器预测的标记,

使得单个模型能够替代传统语音处理流程中的许多阶段。

多任务训练格式使用一组特殊的标记作为任务指示符或分类目标。

4 多任务训练格式拆解

想象一下,你在一个厨房里,你需要同时煮面条、煎鸡蛋和煮咖啡。

如果你一次只做一件事,那么要完成所有工作可能需要很长时间。

但是,如果你能学会同时处理这三件事,你就可以在更短的时间内做完。这就是所谓的“多任务处理”。

在Whisper项目中,这个比喻类似于我们让计算机学习如何同时处理多种语音相关的任务。

Whisper是一个被设计用来听懂人说的话并把它们写下来的程序。

现在,假设我们不仅想要它写下话,还想要它识别说话的人使用的是哪种语言,

甚至可能想要它能理解说话的人的感情状态。

为了让Whisper学会这些技能,我们需要采用一种特殊的训练方式,

即“多任务训练”。就像你需要知道何时该煮面条、煎鸡蛋、煮咖啡一样,

Whisper也需要知道它是在把语音转换成文本,还是在识别语言或感情。

我们是通过添加一些特别的标记或者符号(也就是“tokens”)来告诉它的。

这些标记好比是一个信号,告诉Whisper现在应该用它的哪一部分技能。

这样的训练方式可以让Whisper更加聪明,它不仅可以更好地完成每一项任务,

还可以学习到一些在所有任务中都有用的东西。

最终,它能更快更好地帮助我们处理语音,

就像一个经验丰富的厨师能够轻松地同时处理多道菜一样。

安装步骤

  1. 好的,让我们来梳理一下上面提供的安装说明,并假设你是一名开发人员。

以下是你需要按照顺序执行的步骤,以确保Whisper能够正确安装在你的系统上。

安装环境准备

  1. 确认Python版本:确保你的系统中安装了 Python 3.9.9。

  2. 确认PyTorch版本:你需要安装或者确认已安装 PyTorch 1.10.1 或其最新版本。你可以访问 PyTorch 官网来获取安装指南。

  3. *安装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 。这是对不同操作系统的安装说明:

  • Ubuntu或Debian
sudo apt update && sudo apt install ffmpeg
  • Arch Linux
sudo pacman -S ffmpeg

5 .安装 Whisper

  1. 安装Whisper:通过pip安装Whisper的最新版本,使用以下命令:
pip install -U openai-whisper

或者,如果你想直接从GitHub安装最新的代码库,可以使用以下命令:

pip install git+https://github.com/openai/whisper.git

如果你需要更新Whisper,可以使用:

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

安装小结

概括来说,安装Whisper需要你确保 Python 和 PyTorch 环境的正确设置,

使用pip命令安装Whisper本身,确保系统中安装了 FFmpeg(用于处理音频文件),

以及可能需要的 Rust(对于一些底层编译处理)。

在安装过程中,遇到任何问题可以参考官方文档或者搜索相应的错误信息来找到解决方案。

支持的模型和语言

有五种模型,其中四种提供了英文版本,英文版本的模型提供了速度和准确性的权衡。

下面是可用模型的名称及其相对于大型模型的大致显存需求和推理速度;

实际速度可能取决于许多因素,包括可用的硬件。

纯英语应用程序的.en模型往往表现得更好,尤其是对于小型应用程序。

在模型。我们观察到,小的模型显存差异变得不那么显著。

在模型选择上的表现也因语言有差异。

下面是对比表格:

file

Whisper支持多达100多种语言的语音识别,在 tokenizer.py 文件中列举出来了所有支持的语言 ,其中包括但不限于以下语言:

  • 英语(English)
  • 汉语(Mandarin Chinese)
  • 西班牙语(Spanish)
  • 法语(French)
  • 德语(German)
  • 阿拉伯语(Arabic)
  • 俄语(Russian)
  • 葡萄牙语(Portuguese)
  • 印度语(Hindi)
  • 日语(Japanese)
  • 土耳其语(Turkish)
  • 意大利语(Italian)
  • 韩语(Korean)
  • 荷兰语(Dutch)
  • 瑞典语(Swedish)
  • 芬兰语(Finnish)
  • 丹麦语(Danish)
  • 波兰语(Polish)
  • 匈牙利语(Hungarian)
  • 希腊语(Greek)
  • 诺尔斯克(Norwegian)
  • 泰语(Thai)
  • 等等

名词定义:

WER: 单词错误率

CER: 字符错误率

Common Voice 15和Fleurs数据集是两个语音及语言数据集,它们是用来训练和评估语音识别技术如Whisper等模型的工具

下图显示了按语言划分的large-v3和large-v2模型的性能分解,使用了在Common Voice 15和Fleurs数据集上评估的WER(单词错误率)或CER(字符错误率)

这个图说明对主流语言的错误率比较低。 后面随着版本是升级这个错误率会进一步降低。

file

命令行使用

假设我是一名开发人员,基于Whisper的官方文档,

以下是如何使用命令行来操作Whisper模型进行语音转录和翻译的概括:

语音转录

  1. 选择模型

可以通过--model参数来指定使用哪个预训练模型。

例如,--model medium会选择中等大小的模型进行转录。

如果不指定模型,Whisper默认会使用小模型,这在转录英语时通常效果不错。

whisper audio.flac --model medium
  1. 指定语言

若要转录非英语的音频,可以使用--language参数指定语言代码。

例如,--language Japanese指令会让模型知道输入文件是日语。

whisper japanese.wav --language Japanese
  1. 转录与翻译

如果你需要将非英语的语音内容转录并翻译成英语,可以通过添加--task translate参数来实现。

whisper japanese.wav --language Japanese --task translate
  1. 支持的文件格式

Whisper支持多种音频文件格式,包括.flac.mp3.wav等。

在命令行中,直接指定文件名和格式即可。

whisper audio.flac
whisper audio.mp3
whisper audio.wav --model medium
  1. 获取帮助

若需要查看Whisper支持的所有参数选项,可以使用whisper --help命令。

whisper --help

通过上述概括,

可以理解Whisper提供了灵活的命令行界面来转录和翻译语音文件。

作为开发人员,可以根据实际需要选择合适的模型、指定语言,甚至执行翻译任务,

以适应不同的应用场景和需求。

此外,通过查阅帮助文档可以更加深入地了解不同的命令行选项,从而充分利用Whisper模型的功能。

python使用方式

简单使用:

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

精细化使用:

import whispermodel = 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代码,修改主框架。

更多使用的例子

可以在 https://github.com/openai/whisper/discussions/categories/show-and-tell 页面找到,

开源世界非常神奇 ,例如web演示,与其他工具的集成,不同平台的端口等。

Whisper的代码和模型权重在MIT许可下发布。详见LICENSE。

whisper跟业务结合实践

体系结构

电话录音转换为文本对话信息。

file

whisper接口封装

处理脚本:

#!/bin/bash# 目录路径
input_dir="/sftp/openai/inwav"
output_dir="/sftp/openai/outjson"
log_file="/sftp/openai/logs/log.txt"# 并发度
concurrency=1# HTTP请求的URL
request_url="https://xx-qa.cn/api/phone/crm6/trans/callback?fileName="
request_url2="https://xx.cn/api/phone/crm6/trans/callback?fileName="# 处理单个文件的函数
process_file() {file_path="$1"file_name=$(basename -- "$file_path")output_file="${output_dir}/${file_name%.*}.json"echo "$file_path  , $file_name , $output_file"# 如果输出文件已存在,则跳过处理if [ -f "$output_file" ]; thenecho "Output for $file_name already exists, skipping..." | tee -a "$log_file"rm "$file_path"# 将处理结果通过HTTP GET请求发送response=$(curl -s "$request_url$file_name")echo "Server $request_url$file_name: response: $response" | tee -a "$log_file"response2=$(curl -s "$request_url2$file_name")echo "Server $request_url2$file_name response: $response2" | tee -a "$log_file"returnfifile_size=$(stat -c%s "$file_path")model="small"# 记录开始时间start_time=$(date +%s)# 执行whisper命令whisper "$file_path" --model "$model" --output_format json --output_dir "$output_dir"# 记录结束时间end_time=$(date +%s)# 计算耗时duration=$((end_time - start_time))log_message="Processed $file_name using $model model in $duration seconds."echo "$log_message" | tee -a "$log_file"echo "---------------------------------------" | tee -a "$log_file"# 将处理结果通过HTTP GET请求发送response=$(curl -s "$request_url$file_name")echo "Server $request_url$file_name: response: $response" | tee -a "$log_file"response2=$(curl -s "$request_url2$file_name")echo "Server $request_url2$file_name response: $response2" | tee -a "$log_file"# 删除原wav文件rm "$file_path"# 日志分隔符echo "---------------------------------------" | tee -a "$log_file"
}export -f process_file
export input_dir
export output_dir
export log_file
export request_url
export request_url2while true; do# 查找所有wav文件files=($(find "$input_dir" -name "*.wav"))# 如果目录下没有wav文件,则休眠30秒if [ ${#files[@]} -eq 0 ]; thenecho "$(date '+%Y-%m-%d %H:%M:%S') - No wav files to process. Sleeping for 30 seconds..." >> "$log_file"sleep 30else# 顺序处理文件for next_file in "${files[@]}"; doprocess_file "$next_file"donefi
done

目前输入是通过sftp的方式上传到whisperx服务器,通道可能不太稳定。

后面按照体系结构设计的流程去调整;即监听redis消息,可以把语言带过来,进一步提高效率。

然后,结果的输出,暂时没有对接S3, 也是通过SFTP返回结果的;

数据模型设计

要设计一个电话记录转换文本的数据表模型,我们需要考虑几个关键要素:

  1. 录音文件信息

保存录音文件的基本信息,如文件名、文件路径、录音时长等。

  1. 转录状态

追踪录音到文本转换的状态(例如:待转录、进行中、已完成、失败)。

  1. 转录结果

保存转录文本的结果以及可能的错误信息。

  1. 通知状态

记录是否已经通知Java程序以及接口调用的相关信息。

  1. 时间戳

记录每个步骤的时间,如创建时间、转录开始时间、转录结束时间、通知时间。

基于以上要素,我们可以设计一个简单的数据表模型:

CREATE TABLE call_transtxt (id INT AUTO_INCREMENT PRIMARY KEY,audio_filename VARCHAR(255) NOT NULL,audio_file_path VARCHAR(255) NOT NULL,audio_duration INT DEFAULT NULL, -- 可以存储录音时长(单位:秒)transcript_status ENUM('pending', 'in_progress', 'completed', 'failed') NOT NULL DEFAULT 'pending',transcript_text TEXT, -- 存储转录结果error_message VARCHAR(255), -- 存储转录失败的错误信息notify_status ENUM('not_notified', 'notifying', 'notified', 'notification_failed') NOT NULL DEFAULT 'not_notified',created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,transcription_started_at DATETIME,transcription_completed_at DATETIME,notified_at DATETIME,INDEX idx_audio_filename (audio_filename),INDEX idx_transcript_status (transcript_status),INDEX idx_notify_status (notify_status)
);

在这个表中:

  • id 是主键,用于唯一标识每条记录。
  • audio_filenameaudio_file_path 存储了录音文件的名称和路径。
  • audio_duration 是可选的,如果你有录音时长的具体信息,可以存储在这个字段中。
  • transcript_status 标记转录的状态,这对于追踪进度很有帮助。
  • transcript_text 存储实际的转录文本。
  • error_message 用于记录转录失败时的错误信息。
  • notify_status 用于跟踪是否已经向Java程序发出通知。
  • 时间戳字段 created_attranscription_started_attranscription_completed_atnotified_at 分别用于记录不同阶段的时间点。

有了这张表,Java程序可以轮询数据库或通过其他机制(如数据库触发器等)来获取转录状态的更新,以及一旦转录完成或失败时的通知。

转录完成后,Java程序可以从 transcript_text 字段获取结果并记录到对应的表中。

如果需要处理更多的业务逻辑,比如用户信息、权限验证等,

可能还需要设计额外的表格来满足这些需求。

其它个业务关联的,需要在业务代码中进行。但是存储的信息已经够了。

业务集成效果

处理电话录音文件:

file

转换文本效果:

file

上图概要是跟AI结合之后的效果。

AI质检效果:

file

小结

一句话小结:AI时代结合Whisper可以低成本灵活的实现语音转文本。

通过业务场景问题引入了对语音转文本的需求,然后基于市面上的语音转文本产品做了选型,选定了之后做了详细的了解,并结合业务项目进行了实践。

AIGC思考

要做到实时的语音转文本,代价目前还是比较高的,看了各种云计算厂商的价格都比较高。

跑语音转文本需要GPU,即显存。目前在aws上售价大概 4000美金。

自建从长期来看是节约成本的。

file

AI发展的展望点

  1. 实时多语言转录与翻译整合
  • 在全球化不断加深的今天,未来的语音转文本技术将可能实现即时多语言转录和翻译,
  • 不仅能够即时将话语转为文字,还能跨越语言障碍,实现实时翻译。这将大大促进国际交流与合作。
  • 应用方向:国际会议实时转录、多语言媒体内容的自动生成等。
  1. 情绪与语境识别增强
  • 语音转文本技术未来可能会更加智能化,能够识别说话人的情绪和语境 转录结果将不仅包含文字,还能包含情感倾向、口吻强度等信息。这将使得转录文本更加丰富和准确。
  • 应用方向:心理健康分析、客服情绪评估、自动化营销反馈分析等。
  1. 语音合成和虚拟个性化代表(VPA)的融合
  • 语音转文本技术与语音合成技术的结合将使虚拟个性化代表(如虚拟助手、角色)更加真实和个性化。用户可以创建具有特定声音和个性的VPAs来自动回应电话、邮件或其他通信形式。
  • 应用方向:个性化的虚拟助手、角色扮演游戏、教育等。

全球客服领域的发展设想

  1. 智能客服语音助手
  • 利用语音转文本技术,未来的客服系统将能够提供24/7的服务,通过智能语音助手即时响应客户的咨询,不仅能够理解自然语言,还能够根据语境提供个性化的建议和解决方案。
  • 进一步发展:结合人工智能学习客户的历史交互数据,使服务更加个性化和高效。
    1. 多语言无缝服务体验
  • 随着语音转文本和翻译技术的进步,客服将能够无障碍地为全球客户提供服务,即便客户和客服人员使用不同的语言。这将大幅度提高全球客户满意度和品牌的国际形象。
  • 进一步发展:客服系统能够自动判断客户的语言偏好,并提供相应语言的服务。
    1. 语音分析与情感智能
  • 未来的客服系统可能会应用更先进的语音分析技术,通过语音理解客户的情感状态,并据此调整回应策略。这种情感智能可以帮助企业更好地理解客户需求,提高解决问题的能力。
  • 进一步发展:结合大数据分析,系统可以在全局层面上预测和回应客户需求趋势,实现主动服务。

这些技术的发展将大幅提高客户体验,降低企业运营成本,并提升解决问题的效率,最终推动全球客服行业的转型和升级。

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

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

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

相关文章

PostgreSQL索引篇 | GIN索引 (倒排索引)

GIN索引 倒排索引 PostgreSQL版本为8.4.1 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我) 索引篇: PostgreSQL索引篇 | BTreePostgreSQL索引篇 | GiST索引PostgreSQL索引篇 | Hash索引PostgreSQL索引…

汽车软件市场迅猛扩张,Perforce Helix Core与Helix IPLM助力汽车软件开发的版本控制及IP生命周期管理

汽车软件世界正处于持续变革和转型之中。从自动驾驶汽车到电动汽车和先进的驾驶辅助系统,汽车软件的集成度和复杂性不断提升。 据美国电气与电子工程师协会的研究,如今大多数汽车都集成了超过1亿行代码,而仅仅十年前,这种水平的汽…

软件杯 垃圾邮件(短信)分类算法实现 机器学习 深度学习

文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算…

ubuntu 18.04安装教程(详细有效)

文章目录 一、下载ubuntu 18.04镜像二、安装ubuntu1. 点击下载好的Vmware Workstation,点击新建虚拟机,选择 “自定义(高级)”,之后下一步。2. 默认配置,不需要更改,点击下一步。3. 选择 “安装程序光盘映像文件(iso)(…

Windows环境部署Hadoop-3.3.2和Spark3.3.2

目录 一、Windows环境部署Hadoop-3.3.2 1.CMD管理员解压Hadoop压缩包 2.配置系统环境变量 3.下载hadoop winutils文件 4.修改D:\server\hadoop-3.3.2\etc\hadoop目录下的配置文件 (1)core-site.xml (2)hdfs-site.xml (3)mapred-site.xml (4)yarn-site.xml (5)workers…

Oracle 层级查询(Hierarchical Queries)

如果一张表中的数据存在分级(即数据间存在父子关系),利用普通SQL语句显示数据间的层级关系非常复杂,可能需要多次连接才能完整的展示出完成的层级关系,更困难的是你可能不知道数据到底有多少层。而利用Oracle的层级查询…

VSCode单机活动栏图标无法收起

如果活动栏为展开状态,单击活动栏图标可以正常收起,但无法通过再次单击打开,解决方案如下: 设置->工作台->外观: Activity Bar:Icon Click Behavior: 切换为默认的toggle

案例分析篇03:一篇文章搞定软考设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12601310.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

垃圾收集器

垃圾收集器 文章目录 垃圾收集器垃圾收集算法分代收集理论标记复制算法(eden区域算法)标记清除算法(老年代算法)标记整理算法垃圾收集器种类垃圾收集器之Serial(-XX:useSerialGC -XX: useSerialOldGC)垃圾收集器之Parallel Scavenge(-XX:useParallelGC -…

51单片机基础篇系列-点亮一个LED发光管基础知识搭建

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” LED发光二极管 它是半导体二极管的一种,可以把电能转化成光能,常简写为LED,发光二极管与普通二极管一样是由一个PN结组成,也具有单向…

Android中单例模式正确实现方式

1. 饿汉模式 -线程安全 在类加载时进行实例化, 线程安全,但会导致类加载时间变长。饿汉模式如果使用过多,可能会对App启动耗时带来不利影响。 2. 懒汉模式 -线程不安全 没有加锁, 因此线程不安全。 3. 两次判空 加同步锁 -线程不…

基于PHP构建的HTML5点餐系统的设计13.91

随着互联网时代的发展,人们的生活方式正在发生改变。传统的餐饮行业也正在发生变革。人们不再满足过去的点餐方式,需要更好的体验。本课题旨在结合点餐系统的技术优势,设计一个能够方便顾客与商家,并且节约人力成本以及可以很好地…

HTML5:七天学会基础动画网页11

CSS3动画 CSS3过渡的基本用法: CSS3过渡是元素从一种样式逐渐改变为另一种样式的效果。 过渡属性-transition 值与说明 transition-property 必需,指定CSS属性的name,transition效果即哪个属性发生过渡。 transition-duration 必需,t…

深入浅出计算机网络 day.2 概论⑥ 计算机网络体系结构

上帝疯狂杜撰世界悲情的命题 将凉薄和荒芜尽写 —— 24.3.12 内容概述 1.常见的三种计算机网络体系结构 2.计算机网路体系结构分层的必要性 3.计算机网络体系结构分层思想举例 4.计算机网络体系结构中的专用术语 一、常见的三种计算机网络体系结构 OSI参考模型 TCP/IP参…

深入理解Java中的线程安全List:CopyOnWriteArrayList原理和应用

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在Java并发编程中,线程安全的数据结构是至关重要的。其中,CopyOnWriteArrayList是一个线程安全的ArrayLis…

HBase非关系型数据库

HBase非关系型数据库 1 什么是HBase2 HBase的特点3 什么时候需要HBase4 HBase的数据模型5 HBase架构5.1 架构5.2 HBase如何列式储存 6 如何正确设计RowKey 1 什么是HBase HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、 实时读写的分布式数据…

第100+1步 ChatGPT文献复现:ARIMAX预测肺结核 vol. 1

基于WIN10的64位系统演示 一、写在前面 各位大佬,好久不见。 《100步入门机器学习》肝完了,不懂大家学了多少了,默认你们都学完了吧。 今年我们换一个玩法(灌水):一系列更接近实战的教程,复…

(黑马出品_07)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

(黑马出品_07)SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术分布式搜索 今日目标1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小…

6.S081的Lab学习——Lab1: Xv6 and Unix utilities

文章目录 前言一、启动xv6(难度:Easy)解析: 二、sleep(难度:Easy)解析: 三、pingpong(难度:Easy)解析: 四、Primes(素数,难度:Moderate/Hard)解析&#xff1a…

node.js入门

一、cmd常用命令 windowsR 再输入cmd 打开命令提示符 (1)切换盘符 c: / d: (2)dir 查看全部内容 (3)cd 你需要打开的文件所处的大文件夹名字 (4)cd 大文件夹名再输入dir 查看该大文件里面的所有内容 (5)输出结果里 一个.表示当前目录,两个..表示上级目录 …