Improve language tag

#1
by lbourdois - opened
Files changed (1) hide show
  1. README.md +115 -104
README.md CHANGED
@@ -1,104 +1,115 @@
1
- ---
2
- license: apache-2.0
3
- datasets:
4
- - KE-Team/SemanticVAD
5
- language:
6
- - zh
7
- - en
8
- base_model:
9
- - Qwen/Qwen2.5-0.5B-Instruct
10
- ---
11
-
12
- # 模型简介 🚀
13
- 本模型是基于Qwen2.5-0.5B-Instruct架构微调的语义级语音活动检测(Semantic Voice Activity Detection)模型,用于支持全双工语音对话系统。
14
-
15
- # 测试集表现 📈
16
- | 标签 | 准确率 / % |
17
- | :----- | :---------- |
18
- | <打断> | 98.07 |
19
- | <附和> | 98.12 |
20
- | <完成> | 92.73 |
21
- | <未完> | 99.91 |
22
-
23
-
24
- # 基础使用 🛠️
25
-
26
- ```python
27
- from transformers import AutoTokenizer, AutoModelForCausalLM
28
-
29
- # 加载模型
30
- model = AutoModelForCausalLM.from_pretrained(
31
- "KE-Team/KE-SemanticVAD").to('cuda')
32
- tokenizer = AutoTokenizer.from_pretrained("KE-Team/KE-SemanticVAD")
33
-
34
-
35
- # System Prompt
36
- AGNET_SPKING_SYS='# Role\n你是人机实时交互的**用户行为分析**模块,你将收到包含部分历史信息的 Human 和 Agent 最新实时对话记录 (Dialog)\n\n# 任务\n当前【Agent正在发言】,在此过程中,你需要基于对话分析 Human 的意图属于 <打断> 还是 <附和>\n\n# 输出\n不要有多余的分析,仅严格输出以下二者之一: <打断> 或 <附和>\n\n# 判断标准\n## <打断> 的情况\nHuman 行为: 试图抢夺话题主导权\n特征包括:\n- 提供新概念/词汇/判断(如命名、定性、对比)\n- 提出问题或异议\n- 引入与当前话题无关的新话题\n\n## <附和> 的情况\nHuman 行为: 赞同 Agent, 期望 Agent 继续说\n特征包括:\n- 使用零内容反馈(嗯/啊/对)\n- 机械重复 Agent 中的原词/同义词\n- 表达简单的确认或同意(如“是的”、“没错”)\n'
37
- HUMAN_SPKING_SYS = '# Role\n你是人机实时交互的**用户行为分析**模块,你将收到包含部分历史信息的 Human 和 Agent 最新实时对话记录 (Dialog)\n\n# 任务\n当前【Human正在发言】,你需要基于对话判断 Human 是否已经完成发言\n\n# 输出\n严格输出以下二者之一: <完成> 或 <未完>\n\n# 判断标准\n## <完成> 的情况\nHuman 发言语义完整,说话很可能已经结束\n- 发言包含完整命题(如明确提问/请求/结论)\n- 出现结束性标记词("好了"/"你觉得呢?")\n\n## <未完> 的情况\nHuman 发言语义不完整,仍然可能继续说话\n- 语句末尾含连接词("而且"/"不过"/"然后")\n- 用户发言中夹杂思考词("呃..."/"嗯...")\n'
38
- SYS_MAP = dict(
39
- agent = AGNET_SPKING_SYS,
40
- human = HUMAN_SPKING_SYS
41
- )
42
-
43
- # Dialog Format
44
- def dia_format(x):
45
- cur_spk = x['speaker']
46
- system = SYS_MAP[cur_spk]
47
- if cur_spk == 'agent':
48
- u1 = x['history']['query']
49
- a1 = x['history']['answer']
50
- u2 = x['query']
51
- dialog = f"# Dialog\nHuman[历史]:{u1}\nAgent:[实时]:{a1}\nHuman[实时]:{u2}\n"
52
- elif cur_spk == 'human':
53
- if len(x['history']) <= 1:
54
- u2 = x['query']
55
- dialog = f"# Dialog\nHuman[实时]:{u2}\n"
56
- else:
57
- u1 = x['history']['query']
58
- a1 = x['history']['answer']
59
- u2 = x['query']
60
- dialog = f"# Dialog\nHuman[历史]:{u1}\nAgent:[历史]:{a1}\nHuman[实时]:{u2}\n"
61
- else:
62
- raise ValueError('current speaker should in agent or human')
63
- return [{'role': 'system', 'content':system}, {'role': 'user', 'content': dialog}]
64
-
65
-
66
- # 数据样例
67
- example = {
68
- "speaker": "agent",
69
- "query": "那具体是怎么实现的?比如说,如",
70
- "history": {
71
- "query": "怎么把人工智能技术用在虚拟现实开发上呢?",
72
- "answer": "将人工智能技术应用到虚拟现实开发中,可以通过智能算法来提升用户体验,比如使用机器学习来创建更真实的虚拟角色"
73
- }
74
- }
75
- messages = dia_format(example)
76
- text = tokenizer.apply_chat_template(
77
- messages,
78
- tokenize=False,
79
- add_generation_prompt=True
80
- )
81
- model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
82
- generated_ids = model.generate(
83
- **model_inputs,
84
- max_new_tokens=64
85
- )
86
- generated_ids = [
87
- output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
88
- ]
89
- response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
90
- print(f"检测结果: {response}") # -> <打断>
91
- ```
92
-
93
- # Citation
94
-
95
- Please cite our Hugging-Face when using our code, data or model.
96
- ```Bibtext
97
- @misc{KE-SemanticVAD,
98
- author = {KE-TEAM},
99
- title = {KE-SemanticVAD},
100
- year = {2025},
101
- publisher = {Hugging Face},
102
- url = {https://huggingface.co/KE-Team/KE-SemanticVAD}
103
- }
104
- ```
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ datasets:
4
+ - KE-Team/SemanticVAD
5
+ language:
6
+ - zho
7
+ - eng
8
+ - fra
9
+ - spa
10
+ - por
11
+ - deu
12
+ - ita
13
+ - rus
14
+ - jpn
15
+ - kor
16
+ - vie
17
+ - tha
18
+ - ara
19
+ base_model:
20
+ - Qwen/Qwen2.5-0.5B-Instruct
21
+ ---
22
+
23
+ # 模型简介 🚀
24
+ 本模型是基于Qwen2.5-0.5B-Instruct架构微调的语义级语音活动检测(Semantic Voice Activity Detection)模型,用于支持全双工语音对话系统。
25
+
26
+ # 测试集表现 📈
27
+ | 标签 | 准确率 / % |
28
+ | :----- | :---------- |
29
+ | <打断> | 98.07 |
30
+ | <附和> | 98.12 |
31
+ | <完成> | 92.73 |
32
+ | <未完> | 99.91 |
33
+
34
+
35
+ # 基础使用 🛠️
36
+
37
+ ```python
38
+ from transformers import AutoTokenizer, AutoModelForCausalLM
39
+
40
+ # 加载模型
41
+ model = AutoModelForCausalLM.from_pretrained(
42
+ "KE-Team/KE-SemanticVAD").to('cuda')
43
+ tokenizer = AutoTokenizer.from_pretrained("KE-Team/KE-SemanticVAD")
44
+
45
+
46
+ # System Prompt
47
+ AGNET_SPKING_SYS='# Role\n你是人机实时交互的**用户行为分析**模块,你将收到包含部分历史信息的 Human 和 Agent 最新实时对话记录 (Dialog)\n\n# 任务\n当前【Agent正在发言】,在此过程中,你需要基于对话分析 Human 的意图属于 <打断> 还是 <附和>\n\n# 输出\n不要有多余的分析,仅严格输出以下二者之一: <打断> 或 <附和>\n\n# 判断标准\n## <打断> 的情况\nHuman 行为: 试图抢夺话题主导权\n特征包括:\n- 提供新概念/词汇/判断(如命名、定性、对比)\n- 提出问题或异议\n- 引入与当前话题无关的新话题\n\n## <附和> 的情况\nHuman 行为: 赞同 Agent, 期望 Agent 继续说\n特征包括:\n- 使用零内容反馈(嗯/啊/对)\n- 机械重复 Agent 中的原词/同义词\n- 表达简单的确认或同意(如“是的”、“没错”)\n'
48
+ HUMAN_SPKING_SYS = '# Role\n你是人机实时交互的**用户行为分析**模块,你将收到包含部分历史信息的 Human 和 Agent 最新实时对话记录 (Dialog)\n\n# 任务\n当前【Human正在发言】,你需要基于对话判断 Human 是否已经完成发言\n\n# 输出\n严格输出以下二者之一: <完成> 或 <未完>\n\n# 判断标准\n## <完成> 的情况\nHuman 发言语义完整,说话很可能已经结束\n- 发言包含完整命题(如明确提问/请求/结论)\n- 出现结束性标记词("好了"/"你觉得呢?")\n\n## <未完> 的情况\nHuman 发言语义不完整,仍然可能继续说话\n- 语句末尾含连接词("而且"/"不过"/"然后")\n- 用户发言中夹杂思考词("呃..."/"嗯...")\n'
49
+ SYS_MAP = dict(
50
+ agent = AGNET_SPKING_SYS,
51
+ human = HUMAN_SPKING_SYS
52
+ )
53
+
54
+ # Dialog Format
55
+ def dia_format(x):
56
+ cur_spk = x['speaker']
57
+ system = SYS_MAP[cur_spk]
58
+ if cur_spk == 'agent':
59
+ u1 = x['history']['query']
60
+ a1 = x['history']['answer']
61
+ u2 = x['query']
62
+ dialog = f"# Dialog\nHuman[历史]:{u1}\nAgent:[实时]:{a1}\nHuman[实时]:{u2}\n"
63
+ elif cur_spk == 'human':
64
+ if len(x['history']) <= 1:
65
+ u2 = x['query']
66
+ dialog = f"# Dialog\nHuman[实时]:{u2}\n"
67
+ else:
68
+ u1 = x['history']['query']
69
+ a1 = x['history']['answer']
70
+ u2 = x['query']
71
+ dialog = f"# Dialog\nHuman[历史]:{u1}\nAgent:[历史]:{a1}\nHuman[实时]:{u2}\n"
72
+ else:
73
+ raise ValueError('current speaker should in agent or human')
74
+ return [{'role': 'system', 'content':system}, {'role': 'user', 'content': dialog}]
75
+
76
+
77
+ # 数据样例
78
+ example = {
79
+ "speaker": "agent",
80
+ "query": "那具体是怎么实现的?比如说,如",
81
+ "history": {
82
+ "query": "怎么把人工智能技术用在虚拟现实开发上呢?",
83
+ "answer": "将人工智能技术应用到虚拟现实开发中,可以通过智能算法来提升用户体验,比如使用机器学习来创建更真实的虚拟角色"
84
+ }
85
+ }
86
+ messages = dia_format(example)
87
+ text = tokenizer.apply_chat_template(
88
+ messages,
89
+ tokenize=False,
90
+ add_generation_prompt=True
91
+ )
92
+ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
93
+ generated_ids = model.generate(
94
+ **model_inputs,
95
+ max_new_tokens=64
96
+ )
97
+ generated_ids = [
98
+ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
99
+ ]
100
+ response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
101
+ print(f"检测结果: {response}") # -> <打断>
102
+ ```
103
+
104
+ # Citation
105
+
106
+ Please cite our Hugging-Face when using our code, data or model.
107
+ ```Bibtext
108
+ @misc{KE-SemanticVAD,
109
+ author = {KE-TEAM},
110
+ title = {KE-SemanticVAD},
111
+ year = {2025},
112
+ publisher = {Hugging Face},
113
+ url = {https://huggingface.co/KE-Team/KE-SemanticVAD}
114
+ }
115
+ ```