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
汇智网翻译整理,请转载文章时标明出处