Nhiệm vụ: Tách runtime VoiceScenario thành một module chung cho bộ tổng hợp và bộ trực quan hóa

Tách runtime VoiceScenario thành một module chung cho bộ tổng hợp và bộ trực quan hóa

Loại bỏ việc trùng lặp logic thực thi VoiceScenario giữa synthesizeScenario và ScenarioVisualizer.

Nhiệm vụ

Tách logic thực thi chung của VoiceScenario thành một module runtime duy nhất và sử dụng nó đồng thời trong cả bộ tổng hợp (synthesizer) và bộ trực quan hóa (visualizer).

Hiện tại, logic của prepareScenario, evaluateBezier, updateAutomations, executeCommand và việc tính toán VoiceControlState hiện tại đang bị trùng lặp. Điều này tạo ra rủi ro lệch pha: bộ trực quan hóa có thể hiển thị trạng thái không giống với trạng thái mà DSP thực sự đang sử dụng.

Những việc cần làm

  • Tạo một module runtime chung cho VoiceScenario (ví dụ: VoiceSynthesizer/src/runtime.ts).
  • Tách phần chuẩn bị bố cục kịch bản và timeline chung vào đó.
  • Tách phần diễn giải setanimate.
  • Tách phần tính toán cubic bezier.
  • Tách phần cập nhật automation đang hoạt động và ngữ nghĩa giữ lại giá trị to sau khi kết thúc duration.
  • Đảm bảo khả năng lấy VoiceControlState thực tế theo thời gian hoặc lặp trạng thái dọc theo thang thời gian.
  • Chuyển synthesizeScenario sang sử dụng runtime này.
  • Chuyển ScenarioVisualizer sang dùng chung runtime đó để biểu đồ là sự phản ánh trạng thái thực tế của bộ tổng hợp, chứ không phải là một cách diễn giải kịch bản riêng biệt.
  • Giữ nguyên ngữ nghĩa kết hợp mảng kịch bản hiện tại: initial chỉ có ở kịch bản đầu tiên, các kịch bản tiếp theo tiếp tục trạng thái hiện tại mà không reset.

Tiêu chí hoàn thành

Đối với cùng một VoiceScenario, bộ tổng hợp và bộ trực quan hóa sử dụng chung một triển khai state machine. Sau khi thay đổi ngữ nghĩa runtime, không thể xảy ra tình huống DSP thực thi kịch bản theo một cách còn bộ trực quan hóa hiển thị theo một cách khác.