modelscope-funasrseaco模型可以设置热词后验概率和asr后验概率融合的权重,但是不支持为每个热词指定不同的权重,sdk里面可以设置fst里面热词激励的权重?
在使用 modelscope-funasr 的 seaco 模型时,确实可以通过设置热词后验概率和 ASR 后验概率融合的权重来优化语音识别效果。然而,根据现有知识库资料,该模型并不支持为每个热词单独指定不同的权重。以下是关于如何通过 SDK 设置 FST 中热词激励权重的相关说明:
热词权重用于调整特定词汇在语音识别中的优先级。权重值的范围通常为: - [1, 5]:增加热词被识别的概率,数值越大优先级越高。 - [-6, -1]:降低热词被识别的概率,数值越小优先级越低。
需要注意的是,seaco 模型虽然支持热词功能,但其设计并未允许为每个热词单独设置权重,而是通过全局参数控制热词激励的权重。
在 SDK 中,可以通过以下方式设置 FST 中热词激励的权重:
热词列表需要以 JSON 格式提供,包含热词文本及其对应的权重。例如:
[
{"text": "大树", "weight": 4},
{"text": "银税e贷", "weight": 3}
]
注意:热词文本长度限制为纯中文不超过 10 个汉字,纯英文或中英文混合按空格分词后不超过 5 个词。
在 SDK 中,可以通过 addCustomedParam
方法设置 FST 中热词激励的全局权重。例如:
transcriber.addCustomedParam("hotword_weight", 3);
上述代码将热词激励的全局权重设置为 3,表示对热词的识别概率进行适度提升。
如果需要加载完整的热词表,可以通过 API 接口(如 CreateVocab
或 UpdateAsrVocab
)上传热词列表,并绑定到具体的业务场景中。示例代码如下:
import com.alibaba.fastjson.JSONObject;
import com.aliyun.contactcenterai20240603.Client;
import com.aliyun.contactcenterai20240603.models.CreateVocabRequest;
public class Vocab {
public static void main(String[] args) throws Exception {
// 初始化客户端
Client client = new Client(new Config()
.setAccessKeyId("YOUR_ACCESS_KEY_ID")
.setAccessKeySecret("YOUR_ACCESS_KEY_SECRET"));
// 构建请求参数
CreateVocabRequest request = new CreateVocabRequest();
request.setWorkspaceId("YOUR_WORKSPACE_ID");
request.setName("销售词表");
request.setDescription("销售相关热词");
// 设置热词列表
List<JSONObject> wordWeightList = new ArrayList<>();
wordWeightList.add(new JSONObject().fluentPut("word", "大树").fluentPut("weight", 4));
wordWeightList.add(new JSONObject().fluentPut("word", "银税e贷").fluentPut("weight", 3));
request.setWordWeightList(wordWeightList);
// 发送请求
client.createVocab(request);
}
}
通过 SDK 设置 FST 中热词激励的权重,可以有效提升特定词汇的识别效果。尽管 seaco 模型不支持为每个热词单独指定权重,但通过合理配置全局权重和热词列表,仍可显著优化语音识别性能。如有进一步需求,建议参考阿里云相关文档或联系技术支持获取帮助。