昨天我先把語音流程畫清楚,今天才真正開始寫瀏覽器語音轉文字。這個順序很重要,因為 CareCall AI 的目標不是展示一個會動的麥克風按鈕,而是讓一句口語回答能安全地進入既有關懷流程。如果語音辨識完就直接分類,聽錯一個「有」或「沒有」,後面的工作狀態可能完全不同。因此今天最重要的設計,不是自動化,而是人工確認。
現在可以先選擇四題中的一題,再開始或停止瀏覽器語音。辨識結果會先進入可編輯文字框,使用者能修改錯字或直接重寫。只有按下確認後,文字才會寫入共用個案資料,接著沿用先前完成的正規化與狀態規則。聲音只是多一種輸入方法,並沒有繞過 Day 8 到 Day 18 建立的資料與安全基礎。
我也刻意讓文字輸入從畫面一出現就能使用,而不是等語音失敗才顯示。瀏覽器不支援、權限被拒絕、找不到裝置、沒有辨識到聲音或服務失敗時,畫面都會說明下一步,原有文字不會消失。這樣 Demo 不會被設備狀況綁住。
今天用可重複測試送入國語逐字稿,確認語系、狀態與人工修改保存;實際網站則驗證文字備援與跨資料同步。自動化環境沒有替我授權麥克風,所以我不會把結果寫成真人錄音成功。這一天讓我理解,vibe coding 不只是在追求快速生成功能。真正避免重做的方法,是先定義資料何時能被相信、失敗時怎麼繼續,以及哪些能力不能誇大。