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

news2024/11/15 13:45:44

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

更多使用的例子

可以在 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" ]; then
        echo "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"

        return
    fi

    file_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_url2


while true; do
    # 查找所有wav文件
    files=($(find "$input_dir" -name "*.wav"))

    # 如果目录下没有wav文件,则休眠30秒
    if [ ${#files[@]} -eq 0 ]; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') - No wav files to process. Sleeping for 30 seconds..." >> "$log_file"
        sleep 30
    else
        # 顺序处理文件
        for next_file in "${files[@]}"; do
            process_file "$next_file"
        done
    fi
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.coloradmin.cn/o/1509016.html

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

相关文章

3.11_C++_day1_作业

作业要求&#xff1a; 程序代码&#xff1a; #include <iostream> #include <string.h>using namespace std;int main() {int a0,b0,c0,d0,e0;//分别记录字符串中的大写&#xff0c;小写&#xff0c;数字&#xff0c;空格&#xff0c;其他字符个数string str;cha…

AHU 汇编 实验五

实验名称&#xff1a;实验五 分支与循环程序设计 二、实验内容&#xff1a;从键盘输入一个四位的16进制数&#xff08;其中字母为大写&#xff09;&#xff0c;将其转化为二进制数提示输出。 实验过程&#xff1a; 源代码: data segmentbuff1 db Please input a number(H):$b…

03:HAL---中断

目录 一:中断 1:简历 2:AFIO 3:EXTI 4:NVIC基本结构 5:使用步骤 6:设计中断函数 二:中断的应用 A:对外式红外传感计数器 1:硬件介绍 2:计数代码 B:旋转编码计数器 1:硬件介绍 2:旋转编码器代码 C:按键控制LED D:代码总结 一:中断 1:简历 中断&#xff1a;在主程序…

UI学习 一

教程&#xff1a;Accessibility – Material Design 3 需要科学上网&#xff0c;否则图片显示不出来。设计教程没有图片说明&#xff0c;不容易理解。 优化UI方向 清晰可见的元素足够的对比度和尺寸重要性的明确等级一眼就能辨别的关键信息 传达某一事物的相对重要性 将重…

Unity项目开发必备技能——字体替换工具的使用(上)

在平常我们做unity项目的时候&#xff0c;工具类的使用对于我们来说是必不可少的组成部分&#xff0c;因为工具类可以解决实际问题或者是优化我们已经实现的功能。 当你在做项目的时&#xff0c;我们搭建完场景后&#xff0c;当前场景中你所创建的UI组件中的Text的字体&#xf…

springboot+vue3+nuxt3+ts+minio开发的dsblog3.0前后端分离博客

springbootvue3nuxt3tsminio开发的dsblog3.0前后端博客 一、技术栈 本博客系统采用了先进且成熟的技术栈&#xff0c;包括Spring Boot 3、Spring Security、Vue 3、Nuxt 3、TypeScript、Vite、MinIO、Redis、Element Plus和Markdown等。这些技术共同协作&#xff0c;确保了博…

float32 float16 bfloat16 推理训练GPU速度和内存调研

概念&#xff1a; 参考&#xff1a;Accelerating Large Language Models with Mixed-Precision Techniques - Lightning AI 3种数量类型表示的数据范围不一样&#xff0c;以float32为例其中有1个符号位&#xff0c;8位表示指数&#xff0c;23位表示尾数 标准训练推理是用的fl…

力扣大厂热门面试算法题 15-17

15. 三数之和&#xff0c;16. 最接近的三数之和&#xff0c;17. 电话号码的字母组合&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.11 可通过leetcode所有测试用例。 目录 15. 三数之和 解题思路 完整代码 Java Python ​…

解锁App推广新姿势:Xinstall专属二维码,让推广更高效!

在移动互联网时代&#xff0c;App推广的重要性不言而喻。然而&#xff0c;推广的过程中往往伴随着各种痛点&#xff0c;如何准确追踪用户来源、如何提高安装转化率等&#xff0c;一直是广告主和开发者们关注的焦点。今天&#xff0c;我们要为大家介绍一款专业的App全渠道统计服…

Java基于SpringBoot+Vue的人事管理系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Linux——文件缓冲区与模拟实现stdio.h

前言 我们学习了系统层面上的文件操作&#xff0c;也明白了重定向的基本原理&#xff0c;在重定向中&#xff0c;我们使用fflush(stdout)刷新了缓冲区&#xff0c;当时我们仅仅知道重定向需要刷新缓冲区&#xff0c;但是不知道其所以然&#xff0c;今天我们来见识一下。 一、…

vue自定义主题皮肤方案

方案一&#xff1a;CSS变量换肤&#xff08;推荐&#xff09; 利用css定义变量的方法&#xff0c;用var在全局定义颜色变量&#xff08;需将变量提升到全局即伪类选择器 :root&#xff09;然后利用js操作css变量&#xff0c;document.getElementsByTagName(‘body’)[0].style…

nodejs版本过高导致vue-cli项目无法正常运行解决方案

95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported 方法一&#xff1a;在使用 npm run dev之前使用 set NODE_OPTIONS--openssl-legacy-provider Error: error:0308010C:digital envelope routines::unsupported 解决方法…

UI自动化、性能、API测试一体平台:RunnerGo

UI自动化测试已经成为现代软件开发过程中不可或缺的一部分。它能够提供诸多优势&#xff0c;包括提高测试效率、减少人力成本、提升软件质量等。同时&#xff0c;可视化工具为UI自动化测试带来了更多便利和灵活性。RunnerGo近期上线脚本录制器&#xff0c;根据你的测试操作直接…

【基础计算机网络2】物理层——通信基础

【前言回顾】 【考纲内容】 一、物理层的基本概念 1.1 物理层的主要任务 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒介。物理层的主要任务&#xff1a;确定与传输媒体接口有关的一些特性。 1.2 物理层的一些特性 机械特性…

前端报错404,nginx正常、gateway没有转发请求

问题描述&#xff1a;前端报错 404 Not Found 原因&#xff1a;nacos中对应服务没有上线&#xff0c;下线后&#xff0c;可以启动本地服务&#xff0c;然后在测试上调试代码。&#xff01;&#xff01; 记住重启对应服务&#xff0c;也不会自动上线。

STM32CubeMX 配置 STM32F103 工程:通过DAC输出正弦波

说明&#xff1a;STM32CubeMX 配置 STM32F103 工程&#xff0c;通过DAC输出正弦波&#xff0c;参考代码可自动计算频率&#xff0c;自动计算正弦数据。 先参考这篇文章配置时钟、工程输出的设置&#xff1a; STM32CubeMX 配置 STM32F103 工程&#xff1a;通过DAC生成三角波、…

基于PLC的城市智能交通灯三路口控制系统设计26.06

摘要 可编程控制器(Programmable Logic Controller)简称PLC。是一种综合了通讯、自动控制和计算机技术发展而来的主要用于工业生产的自动控制系统。PLC运用数字运算操作系统&#xff0c;采用可编程序存储器&#xff0c;来于储存内部程序。执行逻辑运算、定时控制、顺序控制、计…

Elastic Stack--08--SpringData框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringData[官网&#xff1a; https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…

Python速度大比拼:与主流编程语言的速度对决

在评估用于具体业务的编程语言时&#xff0c;经常考虑的一个关键指标之一是执行速度。Python以其简单性和可读性而闻名&#xff0c;但有时却因其性能而受到质疑。在这个领域&#xff0c;我们需要深入比较分析Python在执行速度方面与其他流行的编程语言相比的情况。 程语言执行速…