基于开发机进行推理
以近期开源的音频基础模型 Higgs Audio v2 为例,演示如何使用英博云开发机实现将文本转换为音频,并且本地部署。开源 GitHub 链接:higgs-audio。
本示例为一个小规模的推理实例,旨在帮助用户快速上手并验证模型推理流程。运行时间约 1 小时,使用计算资源:单卡 NVIDIA RTX 4090 + 256G 共享存储,成本消耗约 5 元
该示例仅用于演示和验证,所需资源较少,部署和运行均较为便捷,适合新手快速体验完整的模型推理流程。
下载模型代码
从 GitHub 拉取项目
git clone https://github.com/boson-ai/higgs-audio.git
cd higgs-audio
创建环境并安装依赖
conda create -n higgs python=3.12 -y
conda activate higgs
pip install -r requirements.txt
pip install -e .
零样本语音克隆
生成与提供的参考音频相似的音频。
python3 examples/generation.py \
--transcript "The sun rises in the east and sets in the west. This simple fact has been observed by humans for thousands of years." \
--ref_audio belinda \
--temperature 0.3 \
--out_path generation.wav
- 支持尝试其他声音。在
examples/voice_prompts
中查看更多示例声音。 - 支持将自己的声音添加到文件夹中。
FastAPI 本地加载模型
在开发机创建一个 server.py
脚本
import subprocess
import uuid
import os
from fastapi import FastAPI, Form
from fastapi.responses import FileResponse
app = FastAPI(title="Higgs Audio API", description="语音合成接口,调用本地 generation.py 生成语音")
OUTPUT_DIR = "outputs"
os.makedirs(OUTPUT_DIR, exist_ok=True)
OUT_FILE = os.path.join(OUTPUT_DIR, "generation.wav") # 固定输出路径
@app.post("/generate", summary="生成语音")
async def generate_audio(
transcript: str = Form(..., description="要合成的文本"),
temperature: float = Form(0.3, description="生成温度,越低越稳定"),
):
"""
调用本地 generation.py 脚本,把输入文本合成为语音文件并返回。
"""
out_file = os.path.join(OUTPUT_DIR, f"{uuid.uuid4().hex}.wav")
# 调用你现有的 generation.py 脚本
cmd = [
"python3", "./examples/generation.py",
"--transcript", transcript,
"--temperature", str(temperature),
"--model_path", "/data/higgs-audio/higgs-audio-v2-generation-3B-base",
"--device_id", "0",
"--ref_audio_in_system_message",
"--out_path", OUT_FILE
]
result = subprocess.run(cmd, capture_output=True, text=True)
# 打印日志方便调试
print("stdout:", result.stdout)
print("stderr:", result.stderr)
# 如果生成失败,返回报错信息
if result.returncode != 0 or not os.path.exists(OUT_FILE):
return {"error": "生成失败", "stderr": result.stderr}
# 返回音频文件
return FileResponse(OUT_FILE, media_type="audio/wav", filename="generation.wav")
启动服务
uvicorn server:app --host 0.0.0.0 --port 8000
在本机 CMD 或 PowerShell 中执行以下命令,通过 SSH 隧道访问开发机上的服务:
ssh -p 3xxxx -L 8000:127.0.0.1:8000 root@ssh-cn-huabei1.ebcloud.com
-p
是登录服务器用的端口,在开发机远程连接
的地方获得端口号和密码(端口密码复制到本地即可显现)
-L
把本地的 8000 端口转发到远端的 127.0.0.1:8000(FastAPI 服务),这个端口和启动服务的端口保持一致即可
输入密码并等待连接成功后,即可通过本地访问开发机服务。
fastapi 网页调用教程
打开浏览器访问 http://127.0.0.1:8000/docs
点击 default -> Try It out
,输入文本和生成温度,等待几分钟,生成音频,可下载查看。
网页端生成音频的速度通常低于直接在开发机上使用 Python 命令执行,该网页仅提供简易测试功能,一些高级功能尚未实现,如需完整功能和最佳性能,请直接在开发机上运行 Python 脚本进行实验。