❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🎙️ 「Siri下岗警告!开源模型把语音翻译误差碾成渣」
大家好,我是蚝油菜花。你是否也经历过这些AI耳聋时刻——
- 👉 跨国会议AI翻译总慢半拍,关键决策变猜谜游戏
- 👉 语音客服把「投诉」听成「投资」,绩效奖金当场蒸发
- 👉 想用声纹做情绪分析,结果把老板的愤怒识别成「愉悦」...
今天要颠覆语音赛道的 Soundwave ,正在重新定义「听懂人话」!这个中港黑科技:
- ✅ 声文基因配对:对齐适配器让语音文本DNA级融合,翻译延迟砍半
- ✅ 「动态压缩」魔法:1小时录音5分钟解析,保留99%副语言信息
- ✅ 情绪显微镜:从音颤到气声,微情绪捕捉堪比心理医生
已有跨境团队用它做实时谈判转录,心理咨询平台靠它分析患者情绪变化——你的语音交互,是时候进化到「读心术」时代了!
🚀 快速阅读
Soundwave 是香港中文大学(深圳)开源的语音理解大模型,专注于语音与文本的智能对齐和理解。
- 核心功能:支持语音翻译、语音问答、情绪识别和多模态交互,广泛应用于智能语音助手、语言学习等领域。
- 技术原理:通过对齐适配器和压缩适配器技术,实现语音与文本的精准对齐和高效压缩,结合监督微调提升任务处理能力。
Soundwave 是什么
Soundwave 是香港中文大学(深圳)开源的语音理解大模型,专注于语音与文本的智能对齐和理解。通过创新的对齐适配器和压缩适配器技术,Soundwave 有效解决了语音和文本在表示空间上的差异,实现了高效的语音特征压缩,能更好地处理语音任务。
Soundwave 的设计目标是提升语音与文本的交互效率,特别是在语音翻译、语音问答和情绪识别等任务中表现出色。它不仅能够将语音信号与文本进行精准对齐,还能通过多模态交互提供更丰富的用户体验。
Soundwave 的主要功能
- 语音与文本对齐:Soundwave 能将语音信号与文本进行精准对齐,通过设计对齐适配器和压缩适配器,将音频序列转换为大模型能够理解的表示空间,同时动态压缩语音序列长度,与文本匹配。
- 语音翻译:模型在语音翻译任务中表现出色,能将一种语言的语音输入翻译成另一种语言的文本或语音输出。具备高效的对齐能力和强大的语言理解能力。
- 语音问答:Soundwave 支持语音问答功能,用户可以通过语音提问,模型能理解问题并以语音或文本形式回答。
- 语音情绪识别:Soundwave 能识别语音中的情绪信息,通过分析语音的音调、语速、强度等特征,判断说话者的情绪状态(如高兴、悲伤、愤怒等)。
- 多模态交互:模型还支持多模态交互,能结合语音、文本等多种输入形式,提供更丰富的交互体验。
Soundwave 的技术原理
- 语音与文本对齐:通过设计对齐适配器(Alignment Adapter)和使用 CTC 损失来实现语音和文本的对齐。对齐适配器包含线性层与单层 Transformer Encoder 层,能将音频序列转换到大模型能够理解的表示空间,确保语音和文本能够在同一表示空间中进行交互。
- 语音特征压缩:在这一阶段,模型通过压缩适配器(Shrinking Adapter)动态压缩语音序列的长度,与文本匹配。首先根据 CTC 预测的峰值选择语义特征,然后基于这些特征从原始序列中查询并收集辅助信息(如副语言信息等),最后将这两类特征融合以实现序列长度的缩减。
- 监督微调:在微调阶段,模型仅调整 LoRA 参数,基于文本和语音指令数据来提升任务处理能力。通过多种问答格式、语音任务和指令格式的学习,模型增强了指令遵循和语音理解能力。
如何运行 Soundwave
1. 安装要求
Soundwave 项目使用 Python 3.10.11 版本。你可以通过以下命令创建虚拟环境并安装依赖:
conda create -n soundwave python=3.10.11
conda activate soundwave
pip install -r requirements.txt
2. 推理
在开始之前,请确保你有至少 21GB 的 GPU 内存来运行模型推理。
使用命令
要运行推理脚本并处理音频,请使用以下命令:
python run_inference.py --model_path <model_path>
# model_path: Path to the pre-trained Soundwave model.
快速使用示例
以下是一些快速使用示例:
import torch
import librosa
from run_inference import load_model, gen_model_inputs, CONFIG
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model, audio_processor, tokenizer = load_model("FreedomIntelligence/Soundwave", device)
# apply chat template
prompt = "What does the person say?"
model_inputs = gen_model_inputs(tokenizer, prompt, device)
# audio preprocess
audio_path = "assets/audio/example_1.wav"
audio, _ = librosa.load(audio_path, sr=CONFIG.sampling_rate, mono=True)
audio_feat = audio_processor(
audio, sampling_rate=CONFIG.sampling_rate, return_tensors="pt"
).input_features.to(device, dtype=torch.float16)
# inference
output_ids = model.generate(
**model_inputs,
audios=audio_feat,
max_new_tokens=512,
eos_token_id=tokenizer.eos_token_id,
do_sample=True,
top_p=0.9,
temperature=0.2
)
input_token_len = model_inputs["input_ids"].shape[1]
response = tokenizer.batch_decode(output_ids[:, input_token_len:], skip_special_tokens=True)[0]
print(response)
资源
- GitHub 仓库:https://github.com/FreedomIntelligence/Soundwave
- HuggingFace 模型库:https://huggingface.co/FreedomIntelligence/Soundwave
- 在线演示 Demo:https://huggingface.co/spaces/puccho/Soundwave
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦