mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 20:59:05 +00:00
60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
from prometheus_client import Counter, Histogram
|
|
|
|
from reflector.processors.base import Processor
|
|
from reflector.processors.types import AudioFile, Transcript
|
|
|
|
|
|
class AudioTranscriptProcessor(Processor):
|
|
"""
|
|
Transcript audio file
|
|
"""
|
|
|
|
INPUT_TYPE = AudioFile
|
|
OUTPUT_TYPE = Transcript
|
|
|
|
m_transcript = Histogram(
|
|
"audio_transcript",
|
|
"Time spent in AudioTranscript.transcript",
|
|
["backend"],
|
|
)
|
|
m_transcript_call = Counter(
|
|
"audio_transcript_call",
|
|
"Number of calls to AudioTranscript.transcript",
|
|
["backend"],
|
|
)
|
|
m_transcript_success = Counter(
|
|
"audio_transcript_success",
|
|
"Number of successful calls to AudioTranscript.transcript",
|
|
["backend"],
|
|
)
|
|
m_transcript_failure = Counter(
|
|
"audio_transcript_failure",
|
|
"Number of failed calls to AudioTranscript.transcript",
|
|
["backend"],
|
|
)
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
name = self.__class__.__name__
|
|
self.m_transcript = self.m_transcript.labels(name)
|
|
self.m_transcript_call = self.m_transcript_call.labels(name)
|
|
self.m_transcript_success = self.m_transcript_success.labels(name)
|
|
self.m_transcript_failure = self.m_transcript_failure.labels(name)
|
|
super().__init__(*args, **kwargs)
|
|
|
|
async def _push(self, data: AudioFile):
|
|
try:
|
|
self.m_transcript_call.inc()
|
|
with self.m_transcript.time():
|
|
result = await self._transcript(data)
|
|
self.m_transcript_success.inc()
|
|
if result:
|
|
await self.emit(result)
|
|
except Exception:
|
|
self.m_transcript_failure.inc()
|
|
raise
|
|
finally:
|
|
data.release()
|
|
|
|
async def _transcript(self, data: AudioFile):
|
|
raise NotImplementedError
|