From acc9d48feb857492aa9c7d91631098ba2cf03e35 Mon Sep 17 00:00:00 2001 From: cian Date: Wed, 22 Nov 2023 20:54:05 -0500 Subject: [PATCH 1/3] Added pipe functionality --- .../whisper_ctranslate2.py | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/whisper_ctranslate2/whisper_ctranslate2.py b/src/whisper_ctranslate2/whisper_ctranslate2.py index ae6c07b..7d1cfaf 100644 --- a/src/whisper_ctranslate2/whisper_ctranslate2.py +++ b/src/whisper_ctranslate2/whisper_ctranslate2.py @@ -4,7 +4,7 @@ from .languages import LANGUAGES, TO_LANGUAGE_CODE, from_language_to_iso_code import numpy as np import warnings -from typing import Union, List +from typing import BinaryIO, Union, List from .writers import get_writer from .version import __version__ from .live import Live @@ -465,12 +465,15 @@ def main(): vad_min_silence_duration_ms=args.pop("vad_min_silence_duration_ms"), ) + pipe_data: BinaryIO = sys.stdin.buffer.read() if not live_transcribe and len(audio) == 0: - sys.stderr.write("You need to specify one or more audio files\n") - sys.stderr.write( - "Use `whisper-ctranslate2 --help` to see the available options.\n" - ) - return + pipe_data: BinaryIO = sys.stdin.buffer.read() + if len(pipe_data) == 0: + sys.stderr.write("You need to specify one or more audio files or pipe in audio data\n") + sys.stderr.write( + "Use `whisper-ctranslate2 --help` to see the available options.\n" + ) + return word_options = ["highlight_words", "max_line_count", "max_line_width"] if not options.word_timestamps: @@ -553,6 +556,19 @@ def main(): local_files_only, ) + if len(pipe_data) > 0: + if verbose and len(audio) > 1: + print(f"\nPipe Data") + + result = transcribe.inference( + pipe_data, + task, + language, + verbose, + False, + options, + ) + for audio_path in audio: if verbose and len(audio) > 1: print(f"\nFile: '{audio_path}'") From 15c5cee1a0aa24fbabf01d75be9864e41231466c Mon Sep 17 00:00:00 2001 From: cian Date: Wed, 22 Nov 2023 21:44:11 -0500 Subject: [PATCH 2/3] stdin support --- .../whisper_ctranslate2.py | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/whisper_ctranslate2/whisper_ctranslate2.py b/src/whisper_ctranslate2/whisper_ctranslate2.py index 7d1cfaf..af88940 100644 --- a/src/whisper_ctranslate2/whisper_ctranslate2.py +++ b/src/whisper_ctranslate2/whisper_ctranslate2.py @@ -1,5 +1,6 @@ import argparse import os +import tempfile from .transcribe import Transcribe, TranscriptionOptions from .languages import LANGUAGES, TO_LANGUAGE_CODE, from_language_to_iso_code import numpy as np @@ -465,7 +466,6 @@ def main(): vad_min_silence_duration_ms=args.pop("vad_min_silence_duration_ms"), ) - pipe_data: BinaryIO = sys.stdin.buffer.read() if not live_transcribe and len(audio) == 0: pipe_data: BinaryIO = sys.stdin.buffer.read() if len(pipe_data) == 0: @@ -474,6 +474,14 @@ def main(): "Use `whisper-ctranslate2 --help` to see the available options.\n" ) return + else: + with tempfile.NamedTemporaryFile(mode='wb', delete=False) as temp_file: + temp_file.write(pipe_data) + audio = [temp_file.name] + print(audio) + + print(audio) + word_options = ["highlight_words", "max_line_count", "max_line_width"] if not options.word_timestamps: @@ -556,23 +564,11 @@ def main(): local_files_only, ) - if len(pipe_data) > 0: - if verbose and len(audio) > 1: - print(f"\nPipe Data") - - result = transcribe.inference( - pipe_data, - task, - language, - verbose, - False, - options, - ) for audio_path in audio: if verbose and len(audio) > 1: print(f"\nFile: '{audio_path}'") - + print(f"\nFile: '{audio_path}'") result = transcribe.inference( audio_path, task, From 2f991ccdc2060140b829d218badb113ae9c3c6a2 Mon Sep 17 00:00:00 2001 From: cian Date: Wed, 22 Nov 2023 21:48:55 -0500 Subject: [PATCH 3/3] stdin support --- src/whisper_ctranslate2/whisper_ctranslate2.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/whisper_ctranslate2/whisper_ctranslate2.py b/src/whisper_ctranslate2/whisper_ctranslate2.py index af88940..169e19f 100644 --- a/src/whisper_ctranslate2/whisper_ctranslate2.py +++ b/src/whisper_ctranslate2/whisper_ctranslate2.py @@ -478,9 +478,6 @@ def main(): with tempfile.NamedTemporaryFile(mode='wb', delete=False) as temp_file: temp_file.write(pipe_data) audio = [temp_file.name] - print(audio) - - print(audio) word_options = ["highlight_words", "max_line_count", "max_line_width"] @@ -568,7 +565,7 @@ def main(): for audio_path in audio: if verbose and len(audio) > 1: print(f"\nFile: '{audio_path}'") - print(f"\nFile: '{audio_path}'") + result = transcribe.inference( audio_path, task,