Files
reflector/server/reflector/processors/audio_transcript.py

59 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