mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-02-05 02:16:46 +00:00
server: fixes latest implementation details on rtc offer and fastapi
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
from .base import Processor, ThreadedProcessor, Pipeline # noqa: F401
|
||||
from .types import AudioFile, Transcript, Word, TitleSummary # noqa: F401
|
||||
from .types import AudioFile, Transcript, Word, TitleSummary, FinalSummary # noqa: F401
|
||||
from .audio_chunker import AudioChunkerProcessor # noqa: F401
|
||||
from .audio_merge import AudioMergeProcessor # noqa: F401
|
||||
from .audio_transcript import AudioTranscriptProcessor # noqa: F401
|
||||
from .audio_transcript_auto import AudioTranscriptAutoProcessor # noqa: F401
|
||||
from .transcript_liner import TranscriptLinerProcessor # noqa: F401
|
||||
from .transcript_summarizer import TranscriptSummarizerProcessor # noqa: F401
|
||||
from .transcript_topic_detector import TranscriptTopicDetectorProcessor # noqa: F401
|
||||
from .transcript_final_summary import TranscriptFinalSummaryProcessor # noqa: F401
|
||||
|
||||
30
server/reflector/processors/transcript_final_summary.py
Normal file
30
server/reflector/processors/transcript_final_summary.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from reflector.processors.base import Processor
|
||||
from reflector.processors.types import TitleSummary, FinalSummary
|
||||
|
||||
|
||||
class TranscriptFinalSummaryProcessor(Processor):
|
||||
"""
|
||||
Assemble all summary into a line-based json
|
||||
"""
|
||||
|
||||
INPUT_TYPE = TitleSummary
|
||||
OUTPUT_TYPE = FinalSummary
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.chunks: list[TitleSummary] = []
|
||||
|
||||
async def _push(self, data: TitleSummary):
|
||||
self.chunks.append(data)
|
||||
|
||||
async def _flush(self):
|
||||
if not self.chunks:
|
||||
self.logger.warning("No summary to output")
|
||||
return
|
||||
|
||||
# FIXME improve final summary
|
||||
result = "\n".join([chunk.summary for chunk in self.chunks])
|
||||
last_chunk = self.chunks[-1]
|
||||
duration = last_chunk.timestamp + last_chunk.duration
|
||||
|
||||
await self.emit(FinalSummary(summary=result, duration=duration))
|
||||
@@ -1,30 +0,0 @@
|
||||
from reflector.processors.base import Processor
|
||||
from reflector.processors.types import TitleSummary
|
||||
from pathlib import Path
|
||||
import json
|
||||
|
||||
|
||||
class TranscriptSummarizerProcessor(Processor):
|
||||
"""
|
||||
Assemble all summary into a line-based json
|
||||
"""
|
||||
|
||||
INPUT_TYPE = TitleSummary
|
||||
OUTPUT_TYPE = Path
|
||||
|
||||
def __init__(self, filename: Path, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.filename = filename
|
||||
self.chunkcount = 0
|
||||
|
||||
async def _push(self, data: TitleSummary):
|
||||
with open(self.filename, "a", encoding="utf8") as fd:
|
||||
fd.write(json.dumps(data))
|
||||
self.chunkcount += 1
|
||||
|
||||
async def _flush(self):
|
||||
if self.chunkcount == 0:
|
||||
self.logger.warning("No summary to write")
|
||||
return
|
||||
self.logger.info(f"Writing to {self.filename}")
|
||||
await self.emit(self.filename)
|
||||
@@ -66,3 +66,9 @@ class TitleSummary:
|
||||
timestamp: float
|
||||
duration: float
|
||||
transcript: Transcript
|
||||
|
||||
|
||||
@dataclass
|
||||
class FinalSummary:
|
||||
summary: str
|
||||
duration: float
|
||||
|
||||
Reference in New Issue
Block a user