#!/usr/bin/env python3 """ 字幕纠错词库 集中管理所有语音识别纠错规则,方便维护和扩展。 """ # 直接替换表:错误词 -> 正确词 # 这些是已知的固定错误,直接替换即可 DIRECT_FIXES = { # 休止相关 "羞耻": "休止", "休指": "休止", "修止": "休止", "八分羞耻": "八分休止", "四分羞耻": "四分休止", "十六分羞耻": "十六分休止", "二分羞耻": "二分休止", "全羞耻": "全休止", "分羞耻": "分休止", # 附点相关 "负点": "附点", "副点": "附点", "付点": "附点", "浮点": "附点", # 时值相关 "实质": "时值", "实值": "时值", "失值": "时值", # 延音相关 "演音": "延音", "言音": "延音", "盐音": "延音", "延因": "延音", # 乐理相关 "阅历": "乐理", "月理": "乐理", "乐里": "乐理", "乐礼": "乐理", # 音符相关 "音苻": "音符", "音扶": "音符", "因符": "音符", # 调号相关 "调苻": "调号", "调扶": "调号", "吊号": "调号", # 拍号相关 "拍苻": "拍符", "拍扶": "拍符", "排符": "拍符", # 谱号相关 "谱苻": "谱号", "谱扶": "谱号", "普号": "谱号", # 手位相关 "首位": "手位", "守位": "手位", "受位": "手位", "手味": "手位", # 指法相关 "只发": "指法", "织法": "指法", "纸法": "指法", "直发": "指法", # 抬指相关 "台指": "抬指", "抬纸": "抬指", "台纸": "抬指", "太指": "抬指", # 支撑相关 "只撑": "支撑", "肢撑": "支撑", "知撑": "支撑", "直撑": "支撑", # 反复相关 "反服": "反复", "反副": "反复", "翻复": "反复", "反赴": "反复", # 高八度相关 "搞八度": "高八度", "搞八渡": "高八度", "膏八度": "高八度", # 低八度相关 "底八度": "低八度", "抵八度": "低八度", # 连音相关 "联音": "连音", "连因": "连音", "莲音": "连音", # 跳音相关 "挑音": "跳音", "跳因": "跳音", "眺音": "跳音", # 还原相关 "还原记好": "还原记号", "缓原记号": "还原记号", "环原记号": "还原记号", # 节拍相关 "节牌": "节拍", "结拍": "节拍", "结牌": "节拍", # 节奏相关 "节凑": "节奏", "接奏": "节奏", # 分手相关 "分首": "分手", "分守": "分手", "分收": "分手", # 慢练相关 "漫练": "慢练", "曼练": "慢练", "慢炼": "慢练", # 强弱相关 "强若": "强弱", "强落": "强弱", "墙弱": "强弱", # 其他 "负其实": "附其实", "负加": "附加", "一数排": "一组排", } # 歌曲名称补全表:片段 -> 完整名称 SONG_NAME_FIXES = { "盖头来": "《掀起你的盖头来》", "掀起我的盖头来": "《掀起你的盖头来》", "掀起盖头来": "《掀起你的盖头来》", "小星星": "《小星星》", "两只老虎": "《两只老虎》", "欢乐颂": "《欢乐颂》", "献给爱丽丝": "《献给爱丽丝》", "月光": "《月光奏鸣曲》", "梦中的婚礼": "《梦中的婚礼》", "水边的阿狄丽娜": "《水边的阿狄丽娜》", "土耳其进行曲": "《土耳其进行曲》", "小步舞曲": "《小步舞曲》", "爱的罗曼史": "《爱的罗曼史》", } # 语义异常词列表:这些词在钢琴教学语境中几乎不可能出现 ANOMALY_WORDS = [ "羞耻", "尴尬", "恶心", "呕吐", "死亡", "杀人", "犯罪", "监狱", "股票", "基金", "彩票", "赌博", "毒品", "战争", "武器", "休指", "修止", ] # 音乐术语词库:用于异常词的候选替换 MUSIC_TERMS = { "八分音符", "十六分音符", "四分音符", "二分音符", "全音符", "休止", "八分休止", "十六分休止", "四分休止", "二分休止", "全休止", "附点", "反复记号", "反复", "高八度", "低八度", "八度记号", "还原记号", "还原", "连音线", "延音线", "延音", "连音", "跳音", "调号", "拍号", "谱号", "升降号", "指法", "支撑", "手位", "手腕", "放松", "慢练", "分手", "合手", "视奏", "节拍", "节奏", "强弱", "力度", "踏板", "音程", "抬指", "落键", "断奏", "连奏", "把位", "双音", "音阶", "琶音", "和弦", "时值", "语言节奏", "《掀起你的盖头来》", } # 正则模式替换规则 ANOMALY_PATTERNS = [ { "pattern": r"([一二三四五六七八九十百千万\d]+)分羞耻", "replace": r"\1分休止", "reason": "音乐教学中'羞耻'语义异常,结合'X分'上下文推断为'休止'", }, { "pattern": r"分羞耻", "replace": "分休止", "reason": "音乐教学中'分羞耻'语义异常,推断为'分休止'", }, { "pattern": r"([一二三四五六七八九十百千万\d]+)分休指", "replace": r"\1分休止", "reason": "音乐教学中'休指'语义异常,推断为'休止'", }, { "pattern": r"盖头来", "replace": "《掀起你的盖头来》", "reason": "'盖头来'是歌曲名片段,补全为完整歌曲名", }, { "pattern": r"掀起我的盖头来", "replace": "《掀起你的盖头来》", "reason": "歌曲名纠正", }, ]