toy-hardware/scripts/set_custom_wake_word.py

83 lines
2.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
自定义唤醒词配置脚本
解决menuconfig中文乱码问题
"""
import os
import sys
import re
def set_custom_wake_word(pinyin, display_text):
"""
设置自定义唤醒词配置
Args:
pinyin (str): 拼音,如 "ni hao qi yuan"
display_text (str): 显示文本,如 "你好气元"
"""
sdkconfig_path = "sdkconfig"
if not os.path.exists(sdkconfig_path):
print(f"错误:找不到 {sdkconfig_path} 文件")
return False
# 读取sdkconfig文件
with open(sdkconfig_path, 'r', encoding='utf-8') as f:
content = f.read()
# 定义要修改的配置项
configs = {
'CONFIG_USE_WAKE_WORD_DETECT': 'n',
'CONFIG_USE_CUSTOM_WAKE_WORD': 'y',
'CONFIG_CUSTOM_WAKE_WORD': f'"{pinyin}"',
'CONFIG_CUSTOM_WAKE_WORD_DISPLAY': f'"{display_text}"'
}
# 应用配置
for key, value in configs.items():
pattern = rf'^{key}=.*$'
replacement = f'{key}={value}'
if re.search(pattern, content, re.MULTILINE):
# 如果配置项存在,替换它
content = re.sub(pattern, replacement, content, flags=re.MULTILINE)
else:
# 如果配置项不存在,添加到文件末尾
content += f'\n{replacement}'
# 写回文件
with open(sdkconfig_path, 'w', encoding='utf-8') as f:
f.write(content)
print(f"✅ 成功设置自定义唤醒词配置:")
print(f" 拼音: {pinyin}")
print(f" 显示: {display_text}")
print(f" 文件: {sdkconfig_path}")
return True
def main():
"""主函数"""
if len(sys.argv) != 3:
print("使用方法:")
print(" python scripts/set_custom_wake_word.py <拼音> <显示文本>")
print("")
print("示例:")
print(" python scripts/set_custom_wake_word.py 'ni hao qi yuan' '你好气元'")
print(" python scripts/set_custom_wake_word.py 'xiao ai tong xue' '小爱同学'")
print(" python scripts/set_custom_wake_word.py 'tian mao jing ling' '天猫精灵'")
return
pinyin = sys.argv[1]
display_text = sys.argv[2]
if set_custom_wake_word(pinyin, display_text):
print("\n🎉 配置完成!现在可以编译项目:")
print(" idf.py build")
else:
print("\n❌ 配置失败!")
if __name__ == "__main__":
main()