@@ -109,6 +109,17 @@ def apply_tts_result(state: S2ProState, result: S2ProSGLangRequestData) -> None:
109109 state .prompt_tokens = len (result .input_ids ) if result .input_ids is not None else 0
110110
111111
112+ def build_tts_usage (state : S2ProState ) -> dict [str , Any ]:
113+ usage = {
114+ "prompt_tokens" : int (state .prompt_tokens ),
115+ "completion_tokens" : int (state .completion_tokens ),
116+ "total_tokens" : int (state .prompt_tokens + state .completion_tokens ),
117+ }
118+ if state .engine_time_s > 0 :
119+ usage ["engine_time_s" ] = round (float (state .engine_time_s ), 6 )
120+ return usage
121+
122+
112123def make_tts_scheduler_adapters (* , tokenizer : Any ):
113124 """Build model-specific StagePayload <-> scheduler adapters for Fish TTS."""
114125
@@ -126,10 +137,13 @@ def result_adapter(data: S2ProSGLangRequestData) -> StagePayload:
126137 payload = data .stage_payload
127138 state = S2ProState .from_dict (payload .data )
128139 apply_tts_result (state , data )
140+ state .engine_time_s = float (payload .data ["engine_time_s" ])
141+ result_data = state .to_dict ()
142+ result_data ["usage" ] = build_tts_usage (state )
129143 return StagePayload (
130144 request_id = payload .request_id ,
131145 request = payload .request ,
132- data = state . to_dict () ,
146+ data = result_data ,
133147 )
134148
135149 return request_builder , result_adapter
0 commit comments