AB
AiBoss站
project

ema-lightning - 面向土耳其语的轻量级快速文本转语音模型

ema-lightning 是一个土耳其语文本转语音项目,由 canberkkkkkk 维护,采用 apache-2.0 许可。据项目自述,它由 5.6M 参数的 DiT 声学模型与 3M 参数的声码器组成,合计约 8.6M 参数、约 34 MB,支持 GPU 或 CPU 离线运行,并提供整段合成与流式输出两种调用方式。

ema-lightning 是一个土耳其语文本转语音(text-to-speech)项目,托管在 Hugging Face 上,由 canberkkkkkk 维护。据项目自述,它的目标是在很小的体积下同时做到准确与快速:一个 5.6M 参数的 DiT 声学模型加一个 3M 参数的声码器,合计约 8.6M 参数、约 34 MB。它面向的是需要在本地或自有服务器上生成土耳其语语音的开发者,例如做语音播报、有声内容、电话与实时对话类应用的团队;由于可以完全离线运行,它也适合对文本与音频不出本机有要求的场景。

维护者与状态

该项目的维护者为 canberkkkkkk,仓库创建于 2026-10-01,最后更新于 2026-10-06。许可证为 apache-2.0。任务类型为 text-to-speech。截至 2026-10-08,近 30 天下载量为 2724,点赞数为 265。事实表中没有给出正式 release 的信息,因此这里不对版本发布情况做额外说明。

主要能力

以下能力均来自项目自述(README 与模型卡),并非本站的实测结论。

  • 体积小:据项目说明,模型由 5.6M 参数的 DiT 声学模型与 3M 参数的声码器组成,总计约 8.6M 参数、约 34 MB。
  • 准确度:项目自述在 Freya-TR-Eval 上取得 0.92% 的 WER,并称这是其所测量系统中最低的结果。该评测的具体口径、对比系统与运行条件均由项目方给出,本站未做复现。
  • 速度:据项目说明,在 RTX 4090 上配合 .lightning() 使用时,首个音频约 3.86 ms 可得,单请求约为实时的 440 倍;批量 64 条时约为实时的 1316 倍。项目还称在 CPU 上约为实时的 6 倍。
  • 流式输出:stream() 可以在文本其余部分仍在生成时就开始输出音频,适合边生成边播放的场景。
  • 离线运行:项目自述可在 GPU 或 CPU 上完全离线运行,不需要 API key,文本与音频不会离开本机。
  • 多调用方共享一个模型:项目内置名为 Playhead 的调度器,把多个调用方当前需要的工作合并到 GPU 上一起执行;项目称其内部维护两个先到先服务的队列,分别对应等待模型的句子与等待解码器的音频窗口。
  • 文本前端:项目说明其文本前端使用 Erdem Tuna 的 normalizer-tr。

在调用接口上,项目自述提供两种取音频的方式:say() 一次返回整段音频,可接受单条文本或文本列表,列表会以共享批次生成并按顺序返回;stream() 每次调用处理一条文本,逐块返回音频。两者都支持 speed(0.25 到 4,默认 1.0)、seed(相同种子得到相同音频)与 sample_rate(48000、24000、16000、8000,默认 48000)等选项;path 仅用于 say(),单条文本写成一个 .wav 文件,列表则写入指定文件夹。项目还说明,任何文本都会被接受,文本本身不会触发异常,而无效设置会在开始工作前抛出 ValueError。

使用入口

项目仓库地址:ema-lightning。

据项目说明,安装方式为:

pip install ema-lightning

基本用法是创建一个 EMA 实例并在整个程序中复用。项目自述的示例写法如下:

from ema_lightning import EMA

tts = EMA()
speech = tts.say("Merhaba, size nasıl yardımcı olabilirim?", path="merhaba.wav")
print(speech.duration, speech.sample_rate)

据项目说明,say() 返回一个 Speech 对象,包含 audio(float32 NumPy 数组、单声道、取值在 -1 到 1 之间)、sample_rate、duration(秒)以及生成该音频所用的 seed。传入 path 时会额外写出 WAV 文件。流式播放可配合 sounddevice 使用,项目给出的做法是打开一个 48000 Hz、单声道、float32 的输出流,然后遍历 tts.stream(...) 返回的每个音频块写入扬声器。项目还说明,若在 NVIDIA GPU 上希望走快速路径,可在启动时调用一次 EMA().lightning(),它会测量适合当前 GPU 的批大小并缓存、编译模型、录制 CUDA 图并做校验;不调用它或在 CPU 上运行时功能相同,只是更慢。

许可与限制

许可证为 apache-2.0。

关于适用边界,项目自述中提到的几点值得注意:模型面向土耳其语,示例文本与文本前端均为土耳其语;stream() 每次只处理一条文本,若要并发流式输出多条文本,需要为每条文本各起一个线程调用,由 Playhead 统一调度;.lightning() 是 NVIDIA GPU 上的加速路径,在 CPU 上不适用,但普通路径在 CPU 上同样可用,只是速度较慢。项目自述中给出的速度、成本与准确度数字均来自其自身的评测条件(例如 RTX 4090、Freya-TR-Eval 的 495 句、特定的评测工具与参数),换到其他硬件、语言或文本分布上未必一致,使用前建议按自己的场景验证。