* 补上阿里百炼和 LM Studio 并统一越南语品牌写法 ASR 那行中文只写阿里云,配置里阿里系有三条,另外四份也按各自写法补上百炼。LM Studio 走的是 openai 接口,仓里没有独立的供应器,所以并进 openai 那一行,免费平台那列不动。越南语版三处 iFlytek 统一成官方写法 iFLYTEK。 * 补上音频交互测试工具的前置步骤 digital-human 的说明里要求先装 wakeword 依赖再启动,README 里原来只写了启动命令,照着做会缺依赖。五个语言版的用法都补上这一步。 * 把性能测试脚本的提示写清文档在仓库根 脚本是在 main/xiaozhi-server 下执行的,那儿没有 docs 目录,文档在仓库根,原来的提示照字面找不到文件。 * 统一德语版百炼流式语音识别的写法 同一份文件里 LLM 那行写的是 Alibaba Bailian,语音识别这行写成了 Aliyun Bailian, 同一家供应商两种拼法。改成跟 LLM 那行一样。 * 把音频交互测试工具的用法改成指向 README 原来在用法里内嵌装依赖的命令,句子太长。改成指向 main/digital-human 的 README, 依赖怎么装、模型从哪来,那份 README 里都写了。
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
import os
|
|
import importlib.util
|
|
import asyncio
|
|
|
|
print("使用前请根据仓库根目录下 docs/performance_tester.md 的说明准备配置。")
|
|
|
|
|
|
def list_performance_tester_modules():
|
|
performance_tester_dir = os.path.join(
|
|
os.path.dirname(__file__), "performance_tester"
|
|
)
|
|
modules = []
|
|
for file in os.listdir(performance_tester_dir):
|
|
if file.endswith(".py"):
|
|
modules.append(file[:-3])
|
|
return modules
|
|
|
|
|
|
async def load_and_execute_module(module_name):
|
|
module_path = os.path.join(
|
|
os.path.dirname(__file__), "performance_tester", f"{module_name}.py"
|
|
)
|
|
spec = importlib.util.spec_from_file_location(module_name, module_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
|
|
if hasattr(module, "main"):
|
|
main_func = module.main
|
|
if asyncio.iscoroutinefunction(main_func):
|
|
await main_func()
|
|
else:
|
|
main_func()
|
|
else:
|
|
print(f"模块 {module_name} 中没有找到 main 函数。")
|
|
|
|
|
|
def get_module_description(module_name):
|
|
module_path = os.path.join(
|
|
os.path.dirname(__file__), "performance_tester", f"{module_name}.py"
|
|
)
|
|
spec = importlib.util.spec_from_file_location(module_name, module_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return getattr(module, "description", "暂无描述")
|
|
|
|
|
|
def main():
|
|
modules = list_performance_tester_modules()
|
|
if not modules:
|
|
print("performance_tester 目录中没有可用的性能测试工具。")
|
|
return
|
|
|
|
print("可用的性能测试工具:")
|
|
for idx, module in enumerate(modules, 1):
|
|
description = get_module_description(module)
|
|
print(f"{idx}. {module} - {description}")
|
|
|
|
try:
|
|
choice = int(input("请选择要调用的性能测试工具编号:")) - 1
|
|
if 0 <= choice < len(modules):
|
|
asyncio.run(load_and_execute_module(modules[choice]))
|
|
else:
|
|
print("无效的选择。")
|
|
except ValueError:
|
|
print("请输入有效的数字。")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|