ver0.1
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from collections.abc import Awaitable, Callable
|
||||
from dataclasses import dataclass
|
||||
|
||||
from fastapi.concurrency import run_in_threadpool
|
||||
@@ -52,6 +53,7 @@ class VoiceConfirmationService:
|
||||
audits: VoiceAuditRepository,
|
||||
session_factory: async_sessionmaker | None = None,
|
||||
audit_emitter: VoiceAuditEmitter | None = None,
|
||||
on_pending_queue_advanced: Callable[[str], Awaitable[None]] | None = None,
|
||||
) -> None:
|
||||
self._s = settings
|
||||
self._sessions = sessions
|
||||
@@ -64,6 +66,21 @@ class VoiceConfirmationService:
|
||||
audits=audits,
|
||||
session_factory=self._session_factory,
|
||||
)
|
||||
self._on_pending_queue_advanced = on_pending_queue_advanced
|
||||
|
||||
def set_on_pending_queue_advanced(
|
||||
self, cb: Callable[[str], Awaitable[None]] | None
|
||||
) -> None:
|
||||
self._on_pending_queue_advanced = cb
|
||||
|
||||
async def _notify_pending_queue_advanced(self, surgery_id: str) -> None:
|
||||
cb = self._on_pending_queue_advanced
|
||||
if cb is None:
|
||||
return
|
||||
try:
|
||||
await cb(surgery_id)
|
||||
except Exception as exc:
|
||||
logger.warning("on_pending_queue_advanced 回调失败: {}", exc)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# TTS:保持对外接口不变
|
||||
@@ -240,6 +257,7 @@ class VoiceConfirmationService:
|
||||
chosen_label=chosen,
|
||||
rejected=rejected,
|
||||
)
|
||||
await self._notify_pending_queue_advanced(surgery_id)
|
||||
final_status = "rejected" if rejected else "recognized"
|
||||
await self._emitter.success(
|
||||
source="wav",
|
||||
@@ -344,6 +362,7 @@ class VoiceConfirmationService:
|
||||
chosen_label=chosen,
|
||||
rejected=rejected,
|
||||
)
|
||||
await self._notify_pending_queue_advanced(surgery_id)
|
||||
final_status = "rejected" if rejected else "recognized"
|
||||
await self._emitter.success(
|
||||
source="text",
|
||||
@@ -448,7 +467,9 @@ class VoiceConfirmationService:
|
||||
session_trace,
|
||||
) -> object:
|
||||
try:
|
||||
return await run_in_threadpool(self._baidu.asr, pcm, "pcm", 16000, None)
|
||||
return await run_in_threadpool(
|
||||
self._baidu.asr_16k_mono_pcm_or_wav_fallback, pcm
|
||||
)
|
||||
except BaiduSpeechNotConfiguredError as exc:
|
||||
raise await self._emitter.fail(
|
||||
source="wav",
|
||||
@@ -600,5 +621,6 @@ class VoiceConfirmationService:
|
||||
include_extra={
|
||||
"confirmation_id": confirmation_id,
|
||||
"retry_remaining": retry_remaining,
|
||||
"asr_text": text,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user