| import os | |
| import json | |
| import re | |
| def annotate_fillerwords(session_id, base_dir="session_data"): | |
| session_dir = os.path.join(base_dir, session_id) | |
| json_file = os.path.join(session_dir, f"{session_id}_transcriptionCW.json") | |
| if not os.path.exists(json_file): | |
| print(f"[Error] File not found: {json_file}") | |
| return | |
| with open(json_file, "r", encoding="utf-8") as f: | |
| data = json.load(f) | |
| for segment in data.get("segments", []): | |
| words = segment.get("words", []) | |
| fillerwords = [] | |
| for w in words: | |
| word_content = w.get("word", "").strip() | |
| if re.fullmatch(r"\[.*?\]", word_content): | |
| fillerwords.append({ | |
| "start": w.get("start"), | |
| "end": w.get("end"), | |
| "content": word_content, | |
| "duration": round(w.get("end", 0) - w.get("start", 0), 3) | |
| }) | |
| segment["fillerwords"] = fillerwords | |
| with open(json_file, "w", encoding="utf-8") as f: | |
| json.dump(data, f, ensure_ascii=False, indent=4) | |
| print(f"Session {session_id} fillerword annotation done: {json_file}") | |
| return data | |
| if __name__ == "__main__": | |
| annotate_fillerwords("000003") | |