Merge pull request #425 from nightcityblade/fix/issue-377

feat: make display_segments configurable in Client/TranscriptionClient
This commit is contained in:
Vineet Suryan
2026-03-16 10:34:29 +05:30
committed by GitHub
2 changed files with 13 additions and 4 deletions
+5
View File
@@ -50,6 +50,10 @@ if __name__ == '__main__':
parser.add_argument('--enable_timestamps', parser.add_argument('--enable_timestamps',
action='store_true', action='store_true',
help='Show transcription with timestamps') help='Show transcription with timestamps')
parser.add_argument('--n_display_segments',
type=int,
default=4,
help='Number of transcript segments to display in terminal (default: 4).')
args = parser.parse_args() args = parser.parse_args()
@@ -84,5 +88,6 @@ if __name__ == '__main__':
enable_translation=args.enable_translation, # Enable translation of the transcription output enable_translation=args.enable_translation, # Enable translation of the transcription output
target_language=args.target_language, # Target language for translation, e.g., "fr target_language=args.target_language, # Target language for translation, e.g., "fr
enable_timestamps=args.enable_timestamps, enable_timestamps=args.enable_timestamps,
display_segments=args.n_display_segments,
) )
client(f) client(f)
+8 -4
View File
@@ -42,6 +42,7 @@ class Client:
translation_callback=None, translation_callback=None,
translation_srt_file_path="output_translated.srt", translation_srt_file_path="output_translated.srt",
enable_timestamps=False, enable_timestamps=False,
display_segments=4,
): ):
""" """
Initializes a Client instance for audio recording and streaming to a server. Initializes a Client instance for audio recording and streaming to a server.
@@ -99,6 +100,7 @@ class Client:
if translate: if translate:
self.task = "translate" self.task = "translate"
self.enable_timestamps = enable_timestamps self.enable_timestamps = enable_timestamps
self.display_segments = display_segments
self.audio_bytes = None self.audio_bytes = None
@@ -182,7 +184,7 @@ class Client:
if self.enable_timestamps: if self.enable_timestamps:
original_text_with_timestamps = [ original_text_with_timestamps = [
{"start": seg["start"], "end": seg["end"], "text": seg["text"]} {"start": seg["start"], "end": seg["end"], "text": seg["text"]}
for seg in self.transcript[-4:]] for seg in self.transcript[-self.display_segments:]]
if self.last_segment is not None and not any( if self.last_segment is not None and not any(
data.get("text") == self.last_segment["text"] data.get("text") == self.last_segment["text"]
for data in original_text_with_timestamps): for data in original_text_with_timestamps):
@@ -198,11 +200,11 @@ class Client:
print(f"\n\nTRANSLATION to {self.target_language}:") print(f"\n\nTRANSLATION to {self.target_language}:")
utils.print_transcript([ utils.print_transcript([
{"start": seg["start"], "end": seg["end"], "text": seg["text"]} {"start": seg["start"], "end": seg["end"], "text": seg["text"]}
for seg in self.translated_transcript[-4:] for seg in self.translated_transcript[-self.display_segments:]
], timestamps=True) ], timestamps=True)
else: else:
original_text = [seg["text"] for seg in self.transcript[-4:]] original_text = [seg["text"] for seg in self.transcript[-self.display_segments:]]
if self.last_segment is not None and self.last_segment["text"] not in original_text: if self.last_segment is not None and self.last_segment["text"] not in original_text:
original_text.append(self.last_segment["text"]) original_text.append(self.last_segment["text"])
utils.clear_screen() utils.clear_screen()
@@ -210,7 +212,7 @@ class Client:
if self.enable_translation: if self.enable_translation:
print(f"\n\nTRANSLATION to {self.target_language}:") print(f"\n\nTRANSLATION to {self.target_language}:")
utils.print_transcript([seg["text"] for seg in self.translated_transcript[-4:]], translated=True) utils.print_transcript([seg["text"] for seg in self.translated_transcript[-self.display_segments:]], translated=True)
def on_message(self, ws, message): def on_message(self, ws, message):
@@ -817,6 +819,7 @@ class TranscriptionClient(TranscriptionTeeClient):
translation_callback=None, translation_callback=None,
translation_srt_file_path="./output_translated.srt", translation_srt_file_path="./output_translated.srt",
enable_timestamps=False, enable_timestamps=False,
display_segments=4,
): ):
self.client = Client( self.client = Client(
host, host,
@@ -838,6 +841,7 @@ class TranscriptionClient(TranscriptionTeeClient):
translation_callback=translation_callback, translation_callback=translation_callback,
translation_srt_file_path=translation_srt_file_path, translation_srt_file_path=translation_srt_file_path,
enable_timestamps=enable_timestamps, enable_timestamps=enable_timestamps,
display_segments=display_segments,
) )
if save_output_recording and not output_recording_filename.endswith(".wav"): if save_output_recording and not output_recording_filename.endswith(".wav"):