🗣 文本转语音 (TTS)
🗣 文本转语音 (TTS)
API 兼容性
LocalAI TTS API 与 OpenAI TTS API 和 Elevenlabs API 兼容。
LocalAI API
/tts 端点也可以用来将文本转换为语音。
使用方法
输入:input, model
例如,要生成一个音频文件,您可以向 /tts 端点发送一个 POST 请求,指令作为请求体:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"input": "Hello world",
"model": "tts"
}'返回一个 audio/wav 文件。
后端
🐸 Coqui
要求:不要使用以 -core 结尾的 LocalAI 镜像。Python 依赖项是使用此后端所必需的。
Coqui 无需任何配置即可工作。要测试它,您可以运行以下 curl 命令:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"backend": "coqui",
"model": "tts_models/en/ljspeech/glow-tts",
"input":"Hello, this is a test!"
}'您可以使用环境变量 COQUI_LANGUAGE 设置 coqui 后端使用的语言。
您还可以使用配置文件来配置 tts 模型(有关如何使用配置文件的说明,请参见下面的部分)。
Bark
Bark 允许从文本提示生成音频。
这是一个额外的后端 - 在容器中已经可用,无需进行设置。
模型设置
模型设置无需操作。您已经可以开始使用 bark。第一次使用后端时,将下载模型。
使用方法
通过指定 bark 后端来使用 tts 端点:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"backend": "bark",
"input":"Hello!"
}' | aplay要从 https://github.com/suno-ai/bark#-voice-presets 指定一个声音,请使用 model 参数:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"backend": "bark",
"input":"Hello!",
"model": "v2/en_speaker_4"
}' | aplayPiper
要手动安装 piper 音频模型:
- 从 https://github.com/rhasspy/piper/releases/tag/v0.0.2 下载声音
- 将
.tar.tgz文件(.onnx, .json)解压到models文件夹内 - 运行以下命令以测试模型是否正常工作
要使用 tts 端点,请运行以下命令。您可以通过 backend 参数指定后端。例如,要使用 piper 后端:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"model":"it-riccardo_fasol-x-low.onnx",
"backend": "piper",
"input": "Ciao, sono Ettore"
}' | aplay注意:
aplay是一个 Linux 命令。您可以使用其他工具播放音频文件。- 模型名称是文件名带扩展名。
- 模型名称区分大小写。
- LocalAI 必须使用
GO_TAGS=tts标志编译。
Transformers-musicgen
LocalAI 还提供了对 transformers-musicgen 的实验性支持,用于生成短小的音乐作品。目前,这是通过用于文本转语音的相同请求实现的:
curl --request POST \
--url http://localhost:8080/tts \
--header 'Content-Type: application/json' \
--data '{
"backend": "transformers-musicgen",
"model": "facebook/musicgen-medium",
"input": "Cello Rave"
}' | aplay未来的 LocalAI 版本将提供对音频生成超出文本提示的额外控制。
Vall-E-X
VALL-E-X 是 Microsoft 的 VALL-E X 零样本 TTS 模型的开源实现。
设置
后端将自动下载运行模型所需的文件。
这是一个额外的后端 - 在容器中已经可用,无需进行设置。如果您是手动构建,则需要先手动安装 Vall-E-X。
使用方法
通过指定 vall-e-x 后端来使用 tts 端点:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"backend": "vall-e-x",
"input":"Hello!"
}' | aplay声音克隆
要使用声音克隆功能,您必须创建一个 YAML 配置文件来设置模型:
name: cloned-voice
backend: vall-e-x
parameters:
model: "cloned-voice"
tts:
vall-e:
# 要克隆的音频文件的路径
# 相对于模型目录
# 最大 15 秒
audio_path: "audio-sample.wav"然后您可以在请求中指定模型名称:
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"model": "cloned-voice",
"input":"Hello!"
}' | aplayParler-tts
parler-tts。可以直接从画廊安装和配置模型。https://github.com/huggingface/parler-tts
使用配置文件
您还可以使用 config-file 来指定 TTS 模型和它们的参数。
在以下示例中,我们定义了一个自定义配置来加载 xtts_v2 模型,并指定了声音和语言。
name: xtts_v2
backend: coqui
parameters:
language: fr
model: tts_models/multilingual/multi-dataset/xtts_v2
tts:
voice: Ana Florence使用此配置,您现在可以使用以下 curl 命令来生成一个文本转语音的音频文件:
curl -L http://localhost:8080/tts \
-H "Content-Type: application/json" \
-d '{
"model": "xtts_v2",
"input": "Bonjour, je suis Ana Florence. Comment puis-je vous aider?"
}' | aplay响应格式
为了与 OpenAI API 的 response_format 提供一些兼容性,ffmpeg 必须安装(或使用包含 ffmpeg 的 docker 镜像),以在 API 提供其响应之前转换生成的 wav 文件。
关于行为变化的警告。在此添加之前,该参数被忽略,总是返回一个 wav 文件,可能会在集成中产生潜在的编解码器错误(例如尝试从 wav 解码 mp3 文件,这是 OpenAI 使用的默认格式)。
得益于 ffmpeg,支持的格式有 wav、mp3、aac、flac、opus,如果提供的是未知格式或不提供格式,则默认为 wav。
curl http://localhost:8080/tts -H "Content-Type: application/json" -d '{
"input": "Hello world",
"model": "tts",
"response_format": "mp3"
}'如果在查询中添加了 response_format(不是 wav)并且 ffmpeg 不可用,则调用将失败。