MOSS-Transcribe-Diarize

作为一名人工智能应用开发者,我在开发人工智能音频和视频应用时,测试过各种开源的自动语音识别模型,包括 Whisper、Parakeet、Qwen3-ASR 和 Cohere Transcribe。

每个模型都有各自的优缺点,而且大多数不支持说话人分离。 需要Pyannote说话人分离模型来实现说话人分离功能。 最近,OpenMOSS团队发布了一个统一的语音转文本模型——MOSS-Transcribe-Diarize——一次性解决了语音识别中的多个问题。

MOSS-Transcribe-Diarize特性:

  • Supports over 50 languages ​​without explicit language settings.
  • 支持时间戳、说话人分离,并生成结构化输出。
  • 无需音频分段;可接受最长90分钟的连续音频。
  • 支持自定义转录指令、热词和声学事件标注。

1、MOSS-Transcribe-Diarize 架构

2、MOSS-Transcribe-Diarize评估

所有指标越低越好。最佳结果加粗,次佳结果下划线。破折号(-)表示结果不可用。

3、本地部署

官方MOSS-Transcribe-Diarize文档提供了如何使用Transformers 5.x部署MOSS-Transcribe-Diarize的详细指南。因此,我现在将介绍如何使用mlx-audio在macOS上本地部署MOSS-Transcribe-Diarize。

配置虚拟环境

python3 -m venv .venv
source .venv/bin/activate

安装mlx-audio

pip install mlx-audio

下载模型

hf download OpenMOSS-Team/MOSS-Transcribe-Diarize --local-dir ./models/MOSS-Transcribe-Diarize

运行MOSS-Transcribe-Diarize模型。

from mlx_audio.stt import load

model = load("models/MOSS-Transcribe-Diarize")
result = model.generate(
    "audio.wav",
    max_tokens=8192,
    temperature=0.0,
)

print(result.text)

for segment in result.segments:
    print(
        f"{segment['start']:8.2f}s - {segment['end']:8.2f}s  "
        f"{segment.get('speaker_id', 'UNKNOWN'):>7}  {segment['text']}"
    )

调用model.generate方法返回推理结果,该对象的结构如下:

class STTOutput:
    text: str
    segments: List[dict] = None
    language: str = None
    prompt_tokens: int = 0
    generation_tokens: int = 0
    total_tokens: int = 0
    prompt_tps: float = 0.0
    generation_tps: float = 0.0
    total_time: float = 0.0

text属性的输出格式为[start_time] [Sxx] transcribed speech [end_time],而segments属性是列表类型,每个列表项的结构如下:

{
  "start": 0.11,
  "end": 7.93,
  "text": "some text",
  "speaker_id": "S01"
}

MOSS-Transcribe-Diarize模型支持自定义转录指令和热词。以下是相应提示词的示例:

带时间戳的说话人分离(默认)

Transcribe the audio. For each segment, start with the timestamp and speaker ID ([S01], [S02], [S03], ...), then the spoken text, and end with the segment timestamp.

仅说话人标签转录

Transcribe the audio as text using speaker labels such as [S01], [S02], and [S03].

热词提示

Transcribe the audio. For each segment, start with the timestamp and speaker ID ([S01], [S02], [S03], ...), then the spoken text, and end with the segment timestamp. Hotwords: hotword1, hotword2, hotword3

当你需要自定义提示词时,只需在调用model.generate方法时设置prompt参数即可。

4、结束语

MOSS-Transcribe-Diarize是一个新颖的语音转文本模型,使语音转文本转换更加便捷,无需第三方模型来分离说话人。 此外,它消除了语音识别过程中对音频分段的需求,提高了转录准确性。


原文链接:Forget Whisper + Diarization Pipelines — 0.9B Parameters, 90-Minute Audio, 50+ Languages, One Model

汇智网翻译整理,请转载文章时标明出处