AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


跟AI大模型实时语音通话解决方案
发布日期:2024-09-05 19:27:30 浏览次数: 1698


语音是人类最自然便捷的沟通方式,语音交互大幅降低与 AI 对话的门槛。人们只需说出需求,AI 就能快速理解并反应,无需复杂的操作,都在简单的话语中。越来越多的AI智能助手应用在发展语音实时交流方面有显著成效。

诸多领域出现 AI 实时语音创新应用,如 AI 社交陪伴、AI 口语学习、游戏 AI NPC 及 AI 呼叫中心等。这些应用既展现 AI 技术潜力,也体现人们对更自然、更丰富的 AI 交流体验的期望。

我们与 AI 交互的流畅度和效率,不仅取决于大模型毫秒级的理解生成能力,还依赖于所选择的网络传输技术。起初,开发者鉴于 WebSocket 广泛的应用及普及性,常常选用它来构建语音对话。但随着方案的演进以及用户需求的提升,其局限性也逐渐展露:

响应延时:WebSocket 基于 TCP 协议构建,在公共互联网上进行高带宽的数据传输时,尤其是在网络的“最后一公里”中,容易受到网络条件不佳的影响,导致传输延迟不稳定,影响用户的交流体验。
打断回声:我们发现当前主流 AIGC 语音通话应用少有能实现用户随时打断,体验上更像“对讲机”而非“打电话”。因为用户在智能体输出时讲话,会混入智能体的回声,导致用户所说内容无法准确识别。
拓展限制:WebSocket 对于视频或多人交互场景显得“力不从心”。视频比音频使用更多的网络带宽,丢失和延迟的数据包也会更频繁;随着交互个体的增多,音视频流的发布和订阅管理也变得更加复杂。  


为了提供更流畅自然的用户体验,适应大模型向多模态方向的快速发展,AI 实时语音方案采用实时通信(RTC)技术更为合适。RTC 技术能够更好地适应用户网络条件的变化,提供更优的实时传输性能。

之前我收集的好多文章也多次提到类似的应用。

  • 世界上最快的语音聊天机器人

  • 一款快速低延迟的本地AI语音聊天系统:voicechat2

  • ChatTTS:用于对话场景的文本转语音

  • 开源TalkWithGemini: 一键免费部署您的私人 Gemini 应用,支持图片识别和语音对话

  • Hume AI  带着情感感知实时语音对话

  • WhisperFusion:  超低延迟的实时语音对话

  • SpeechGPT-Gen: 实现语音跟语音的对话?


今天介绍两款新的类似应用。

豆包在上一周的时候推出了对话式 AI 实时交互解决方案。

搭载火山方舟大模型服务平台,通过火山引擎 RTC 实现语音数据的高效采集、处理和传输,并深度整合豆包·语音识别模型和豆包·语音合成模型,简化语音到文本和文本到语音的转换过程,提供卓越的智能对话和自然语言处理能力,帮助应用快速实现用户和云端大模型的实时语音通话。

豆包·语音合成模型:解锁「豆包」同款音色,提供自然生动的语音合成能力,善于表达多种情绪,演绎多种场景。

豆包·语音识别模型:更高的准确率及灵敏度,更低的语音识别延迟,支持多语种的正确识别。

火山方舟:提供模型精调、推理、评测等全方位功能与服务,提供丰富的插件生态和 AI 原生应用开发服务,全方位保障企业级 AI 应用落地。

对话式 AI 实时交互服务方案架构

开箱即用快速搭建,只需调用标准的 OpenAPI 接口即可配置所需的语音识别(ASR)、大语言模型(LLM)、语音合成(TTS)类型和参数。而火山引擎 AIGC RTC-Server 负责边缘用户接入、云端资源调度、文本与语音转换处理以及数据订阅传输等环节。整体简化开发流程,让企业应用更专注在对大模型核心能力的训练及调试,加速 AI 实时语音场景创新。

 随时打断,交流自然

要让与 AI 的交流像和朋友一样自然,随时打断甚至直接插话,关键在于:当用户和 AI 同时说话时,如何解决互相干扰的音频“双讲”现象。火山引擎 RTC 基于成熟的音频 3A 处理技术,针对“双讲”通过传统回声消除算法和深度学习算法的结合,不仅有效去除回声,还能避免用户语音被过度处理,确保云端语音识别(ASR)能准确捕捉和识别用户的语音信息。此外,火山引擎 RTC 通过简化算法提高处理速度,避免因算法复杂性带来的额外延时。



实时秒回,全球畅聊
火山引擎 RTC 依托于 WebRTC 传输网络(WTN),优选全球海量优质节点,实现全球用户智能接入和音视频数据超低延时传输,即使在复杂弱网环境下也能保持低延时、高质量的通信能力。同时,火山引擎 RTC 结合云端语音识别流式处理,优化端到端链路延迟,整体响应延时可低至 1s。此外,火山引擎实时信令 RTS 可提供稳定可靠、低延时、高并发的信令收发能力,可对文字信令高效传输。

不受限于 AI 服务部署区域,用户无论身处何地,是语音交流还是文字对话,都可以享受无延迟、流畅的 AI 交互体验。


再介绍另一个开源项目:


  Speech To Speech

语音到语音:一个开源和模块化的 GPT-4-o 项目

https://github.com/eustlb/speech-to-speech

该项目实现了一个语音到语音的级联管道,包含以下部分:

  • 语音活动检测 (VAD):使用 Silero VAD v5

  • 语音转文本 (STT):使用 Whisper 模型检查点(包括简化版本)

  • 语言模型 (LM):使用任何 Hugging Face Hub 上可用的 instruct 模型!?

  • 文本到语音 (TTS):使用 Parler-TTS ?

该管道旨在提供一个完全开放和模块化的方法,利用 Transformers 库中可用的模型,通过 Hugging Face Hub 实现。每个部分的模块化程度如下:

  • VAD:使用 Silero 的实现。

  • STT:仅使用 Whisper 模型,不过可以使用任何 Whisper 检查点,支持选项包括 Distil-Whisper 和法语 Distil-Whisper。

  • LM:这一部分完全模块化,可以通过简单修改 Hugging Face Hub 模型 ID 来更换。用户需要选择一个 instruct 模型,因为此处涉及与其交互。

  • TTS:Parler-TTS 的微型架构是标准的,但可以使用不同的检查点,包括微调的多语言检查点。


git clone https://github.com/eustlb/speech-to-speech.gitcd speech-to-speechpip install -r requirements.txt


该管道可以通过两种方式运行:

  • 服务器/客户端方法:模型在服务器上运行,音频输入/输出从客户端流式传输。

  • 本地方法:使用相同的客户端/服务器方法,但使用环回地址。



服务器/客户端方法

在服务器上运行管道:

python s2s_pipeline.py --recv_host 0.0.0.0 --send_host 0.0.0.0

然后在本地运行客户端以处理麦克风输入和接收生成的音频:

python listen_and_play.py --host <服务器的IP地址>


本地方法

只需使用环回地址:

python s2s_pipeline.py --recv_host localhost --send_host localhost
python listen_and_play.py --host localhost


推荐用法

为 Whisper 和 Parler-TTS 启用 Torch Compile:

python s2s_pipeline.py \
--recv_host 0.0.0.0 \
--send_host 0.0.0.0 \
--lm_model_name microsoft/Phi-3-mini-4k-instruct \
--init_chat_role system \
--stt_compile_mode reduce-overhead \
--tts_compile_mode default


目前,捕获 CUDA Graphs 的模式不兼容 Parler-TTS 的流式传输(reduce-overhead, max-autotune)。

命令行使用

模型参数

model_name、torch_dtype 和 device 可用于每个利用 Transformers 实现的部分:语音转文本、语言模型和文本到语音。使用相应的前缀指定目标管道部分:

  • stt(语音转文本)

  • lm(语言模型)

  • tts(文本到语音)


--lm_model_name google/gemma-2b-it

生成参数

可以使用部分的前缀+_gen_ 来设置模型生成方法的其他生成参数,例如 --stt_gen_max_new_tokens 128。这些参数可以添加到管道部分的参数类中,如果尚未暴露的话(例如 LanguageModelHandlerArguments)。

重要参数

VAD 参数
  • --thresh:触发语音活动检测的阈值。

  • --min_speech_ms:被认为是语音活动的最小检测时长。

  • --min_silence_ms:用于分割语音的最短静默时间间隔,平衡句子切割和延迟减少。

语言模型
  • --init_chat_role:默认为 None。设置聊天模板中的初始角色(如适用)。参考模型卡片设置该值(例如对于 Phi-3-mini-4k-instruct,必须设置 --init_chat_role system)。

  • --init_chat_prompt:默认为 "You are a helpful AI assistant." 设置 --init_chat_role 时需要此参数。

语音转文本
  • --description:设置 Parler-TTS 生成语音的描述。默认为:"A female speaker with a slightly low-pitched voice delivers her words quite expressively, in a very confined sounding environment with clear audio quality. She speaks very fast."

  • --play_steps_s:指定 Parler-TTS 流式输出时发送的第一块的持续时间,影响准备和解码步骤。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询