mlx-audio
扫码查看

在Apple Silicon上高效运行的语音处理工具

mlx-audio

综合介绍

mlx-audio是一个专为苹果MLX框架打造的语音处理库。 它主要为Apple Silicon(M系列芯片)设备提供高效的语音功能,包括文本转语音(TTS)、语音转文本(STT)和语音转语音(STS)。 这个工具利用苹果芯片的统一内存架构,实现了快速的语音生成和分析。 该项目支持多种语言,用户可以选择不同的声音风格,并根据需要调整语速。 除了作为Python库在代码中调用外,mlx-audio还提供了一个带有3D音频可视化功能的交互式Web界面和REST API,方便用户进行语音生成和管理。 它还支持模型量化等高级功能,能够优化模型性能,减少资源占用。 对于希望在苹果设备上进行音频处理的开发者和研究人员来说,这是一个非常实用的工具。

功能列表

  • 专为Apple Silicon优化: 基于苹果的MLX框架构建,在M系列芯片上实现快速、高效的推理。
  • 多功能语音处理: 支持文本转语音(TTS)、语音转文本(STT)和语音转语音(STS)。
  • 多语言支持: 内置支持多种语言,如美式英语、英式英语、日语和中文。
  • 语音克隆: 支持使用参考音频样本来克隆和定制声音。
  • 声音定制: 提供多种预设声音风格,并允许用户调整0.5倍到2.0倍的语速。
  • 交互式Web界面: 提供一个带有3D音频可视化功能的Web用户界面,用于实时生成和播放音频。
  • REST API: 内置一个API服务器,允许通过HTTP请求进行语音生成,方便与其他应用集成。
  • 模型量化: 支持对模型进行量化,以提升运行性能并减少内存占用。
  • 文件管理: 生成的音频文件会自动保存,并可以通过Web界面直接在文件管理器中打开。

使用帮助

mlx-audio是一个功能强大的工具,本节将详细介绍其安装和使用方法,让你能快速上手。

1. 安装

安装过程非常简单,只需要通过pip命令即可完成。如果需要使用Web界面和API功能,则需要安装额外的依赖项。

打开终端,输入以下命令安装核心库:

pip install mlx-audio

如果希望使用Web界面和API服务器,需要安装requirements.txt中列出的依赖:

pip install -r requirements.txt

注意:某些语言(如日语和中文)需要额外安装特定的依赖包。

2. 快速上手:命令行工具

安装完成后,你可以直接在命令行中使用mlx_audio进行文本转语音。这是最快捷的使用方式。

基本用法生成一段简单的英文语音:mlx_audio.tts.generate --text "Hello, world"执行后,程序将生成一个音频文件并保存在默认目录中。

指定输出文件名和语速你可以自定义输出文件的名称和说话的语速。--speed参数支持0.5到2.0之间的值。mlx_audio.tts.generate --text "Hello, world" --file_prefix hello --speed 1.4

语音克隆使用CSM模型时,你可以通过--ref_audio参数指定一个参考音频文件,来克隆其中的音色。python -m mlx_audio.tts.generate --model mlx-community/csm-1b --text "Hello from Sesame." --play --ref_audio ./sample_audio.wav

3. 在Python代码中使用

除了命令行,你也可以在自己的Python项目中导入mlx_audio库来生成音频。

下面是一个在Python脚本中生成音频并保存为.wav文件的示例:

from mlx_audio.tts.generate import generate_audio
# 定义要转换的文本、模型和声音参数
text_to_generate = ("In the beginning, the universe was created...\n"
"...or the simulation was booted up.")
model_id = "prince-canuma/Kokoro-82M"
voice_style = "af_heart" # 尝试 'af_nova', 'af_bella' 等不同声音
speech_speed = 1.2
language_code = "a" # 'a' 代表美式英语
# 调用函数生成音频
generate_audio(
text=text_to_generate,
model_path=model_id,
voice=voice_style,
speed=speech_speed,
lang_code=language_code,
file_prefix="audiobook_chapter1", # 输出文件前缀
audio_format="wav",               # 音频格式
sample_rate=24000,
join_audio=True,                  # 如果文本分段,是否合并音频
verbose=True                      # 打印详细日志
)
print("音频文件已成功生成!")

4. Web界面和API服务器

mlx-audio自带一个基于FastAPI的Web服务器,提供了一个图形化的操作界面和一组REST API。

启动服务器在终端中运行以下命令来启动服务器:mlx_audio.server服务器默认在http://127.0.0.1:8000上运行。 你可以通过参数指定主机和端口:mlx_audio.server --host 0.0.0.0 --port 9000

Web界面功能启动后,在浏览器中打开http://127.0.0.1:8000,你将看到一个操作界面,其功能包括:

  • 文本输入与生成: 在文本框中输入文字,选择声音和语速,然后点击生成。
  • 3D音频可视化: 界面中有一个3D球体,会根据当前播放音频的频率做出实时响应。
  • 音频上传: 你可以上传自己的音频文件进行播放和可视化。
  • 直接访问文件夹: 界面上有一个按钮,可以让你直接在本地文件管理器中打开存放生成音频的文件夹。

API接口服务器同时提供了多个API接口,方便开发者进行程序化调用。

  • POST /tts: 用于文本转语音。
    • 参数text (必需), voice (可选), speed (可选)。
    • 返回: 包含生成文件名的JSON。
  • GET /audio/{filename}: 获取已生成的音频文件。
  • POST /play: 在服务器上播放指定的音频文件。
    • 参数filename (必需)。
  • POST /stop: 停止当前正在播放的音频。

5. 高级功能:模型量化

为了在保持可接受质量的同时提高性能和减少内存占用,你可以对模型进行量化。量化会将模型的权重从高精度(如32位浮点数)转换为低精度(如8位整数)。

以下是如何将模型量化为8位的示例代码:

from mlx_audio.tts.utils import quantize_model, load_model
import json
import mlx.core as mx
# 加载原始模型
model = load_model(repo_id='prince-canuma/Kokoro-82M')
config = model.config
# 设置量化参数并执行量化
group_size = 64
bits = 8
weights, config = quantize_model(model, config, group_size, bits)
# 保存量化后的模型和配置文件
with open('./8bit/config.json', 'w') as f:
json.dump(config, f)
mx.save_safetensors("./8bit/kokoro-v1_0.safetensors", weights, metadata={"format": "mlx"})

量化后的模型体积更小,推理速度更快,尤其适用于资源有限的环境。

应用场景

  1. 个人化内容创作用户可以利用这个工具快速生成有声读物、播客或视频配音。通过调整声音、语速或使用语音克隆功能,可以创作出具有鲜明个人风格的音频内容。
  2. 应用开发与集成开发者可以将mlx-audio的API集成到自己的macOS或iOS应用程序中,为应用增加语音交互功能,例如朗读文章、语音通知或作为虚拟助手的发声模块。
  3. 辅助功能工具对于有视力障碍的用户,可以开发一个工具,利用mlx-audio将屏幕上的文本内容实时转换为语音,提高信息获取的便利性。
  4. 语音克隆与AI研究研究人员和AI爱好者可以使用支持语音克隆的CSM模型,通过提供一小段参考音频来生成具有特定音色的语音,用于语音合成技术的研究和实验。

QA

  1. mlx-audio主要支持什么操作系统?mlx-audio主要为运行在Apple Silicon(M1, M2, M3等芯片)上的macOS系统设计和优化。 虽然它可能在其他系统上运行,但最佳性能表现在苹果设备上。
  2. 这个工具支持中文吗?是的,支持中文。使用Kokoro模型时,将语言代码设置为z即可生成中文语音。不过,这需要额外安装中文处理相关的依赖库。
  3. 我可以使用自己的声音来生成语音吗?可以。通过使用CSM(Conversational Speech Model)模型,并提供一个你自己的参考音频文件(--ref_audio),mlx-audio可以克隆该音频中的音色来生成新的语音。
  4. 使用这个项目是免费的吗?会产生额外费用吗?是的,mlx-audio项目本身是免费的,它基于MIT许可证开源。 你可以在本地设备上自由使用,不会产生任何费用。
微信微博Email复制链接