from funasr.auto.auto_model_vllm import AutoModelVLLM
def main():
# 1. 初始化模型
model = AutoModelVLLM(
model="FunAudioLLM/Fun-ASR-Nano-2512",
tensor_parallel_size=1,
hub="ms",
# 💡 建议加上这个参数,防止 16GB 显存 OOM(之前你遇到过)
gpu_memory_utilization=0.5,
)
# 2. 执行推理
print("开始推理...")
res = model.generate(inputs=["meeting.wav"], language="中文")
# 3. 打印结果结构(用于调试)
# 💡 注意:根据官方文档,离线服务的 SPK(说话人分离)默认是关闭的。
# 我们先打印一下 res 的 keys,看看有没有 sentence_info 和 spk 字段。
print("返回结果的字段:", res[0].keys())
# 4. 尝试提取说话人信息
if "sentence_info" in res[0]:
for sent in res[0]["sentence_info"]:
spk_id = sent.get('spk', 'unknown')
text = sent.get('text', sent.get('sentence', ''))
print(f"Speaker {spk_id}: {text}")
else:
print("⚠️ 未找到 sentence_info 字段。SDK 默认可能未开启说话人分离。")
print("普通识别结果:", res[0].get('text', ''))
⚠️ 核心修复:必须加上这个保护块!
if name == 'main':
main()
代码如上,音频文件如下
meeting.wav
结果1:
开始推理...
返回结果的字段: dict_keys(['key', 'text', 'timestamps'])
⚠️ 未找到 sentence_info 字段。SDK 默认可能未开启说话人分离。
普通识别结果: 你几啊?我给他了。这个你你送来了二十万元人民币,一个清官被诬陷,不是因为他贪,而是因为他不贪,而是因为他不贪。人大主任齐恒寿坚持人大不是橡皮图章,不仅要查市长选举的黑幕,还否决了新任市长。何阳是副市长,主抓什么工作?呃,城建这一年的七月四号有没有人给你送来了二十万元人民币?一个清官被诬陷,不是因为他不贪,而是因为他不贪。任大主任齐恒寿找到张文杰,张文杰说,你要是不答应,我就把你做掉。然后放火烧了你坐的房,你信不信?张文杰说,我我我我我我我我我我我我我我我。我我我我我我我我。然后我我我我我我我我。
结果2:
(EngineCore pid=4032314) INFO 06-25 16:13:17 [vllm.py:790] Asynchronous scheduling is enabled.
开始推理...
返回结果的字段: dict_keys(['key', 'text', 'timestamps'])
⚠️ 未找到 sentence_info 字段。SDK 默认可能未开启说话人分离。
普通识别结果: 你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几
(EngineCore pid=4032314) INFO 06-25 16:13:20 [core.py:1210] Shutdown initiated (timeout=0)
(EngineCore pid=4032314) INFO 06-25 16:13:20 [core.py:1233] Shutdown complete
from funasr.auto.auto_model_vllm import AutoModelVLLM
def main():
# 1. 初始化模型
model = AutoModelVLLM(
model="FunAudioLLM/Fun-ASR-Nano-2512",
tensor_parallel_size=1,
hub="ms",
# 💡 建议加上这个参数,防止 16GB 显存 OOM(之前你遇到过)
gpu_memory_utilization=0.5,
)
if name == 'main':
main()
代码如上,音频文件如下
meeting.wav
结果1:
⚠️ 未找到 sentence_info 字段。SDK 默认可能未开启说话人分离。
⚠️ 未找到 sentence_info 字段。SDK 默认可能未开启说话人分离。
开始推理...
返回结果的字段: dict_keys(['key', 'text', 'timestamps'])
普通识别结果: 你几啊?我给他了。这个你你送来了二十万元人民币,一个清官被诬陷,不是因为他贪,而是因为他不贪,而是因为他不贪。人大主任齐恒寿坚持人大不是橡皮图章,不仅要查市长选举的黑幕,还否决了新任市长。何阳是副市长,主抓什么工作?呃,城建这一年的七月四号有没有人给你送来了二十万元人民币?一个清官被诬陷,不是因为他不贪,而是因为他不贪。任大主任齐恒寿找到张文杰,张文杰说,你要是不答应,我就把你做掉。然后放火烧了你坐的房,你信不信?张文杰说,我我我我我我我我我我我我我我我。我我我我我我我我。然后我我我我我我我我。
结果2:
(EngineCore pid=4032314) INFO 06-25 16:13:17 [vllm.py:790] Asynchronous scheduling is enabled.
开始推理...
返回结果的字段: dict_keys(['key', 'text', 'timestamps'])
普通识别结果: 你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几啊?这个你几
(EngineCore pid=4032314) INFO 06-25 16:13:20 [core.py:1210] Shutdown initiated (timeout=0)
(EngineCore pid=4032314) INFO 06-25 16:13:20 [core.py:1233] Shutdown complete