由于語音轉寫是異步方案,在實際應用場景中會產生不少問題,關于獲取轉寫結果的方式和時機都是性能優化的重點,是定期循環獲取還是業務觸發獲取?創建轉寫任務多久后請求結果命中率最大?
#
**定期循環獲取轉寫結果**,是指服務器在創建轉寫任務后,每隔一段時間調用獲取轉寫結果接口。這個時間可以是固定的,比如每30秒調用一次;也可以是不固定的,比如音頻長度為120秒,那么每次調用的時間間隔可以設定為60秒、30秒、15秒、10秒、10秒、10秒......,這種方式開發成本高些,但更為科學。定期循環方式更適用于對轉寫結果重度處理的應用系統,需要有一個穩定的定時任務系統模塊支持。
#
**業務觸發獲取轉寫結果**,是指服務器在創建轉寫任務后,只保存taskId,并不獲得轉寫結果,直到用戶在應用系統需要查看結果時,服務器再根據taskId去獲取轉寫結果展現給用戶。業務觸發方式更適用于對轉寫結果輕量處理的應用系統,簡化開發且提高服務穩定性。
我們有幾點建議可以在性能上更優化:
1. 如果音頻長度為120秒,那么創建音頻轉寫任務后的60秒內(即音頻長度的50%)不必獲取轉寫結果,直接返回狀態處理中。
2. 對于同一個音頻,確保一段時間(比如3秒)以內服務器只去訪問一次轉寫結果,規避多人同時訪問造成不必要的服務器資源浪費。
#
#