add dual license warning indication when using simulstreaming backend
This commit is contained in:
parent
0cd885247c
commit
b42d8b2692
5 changed files with 37 additions and 9 deletions
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
## 🚀 Overview
|
## 🚀 Overview
|
||||||
|
|
||||||
This project is based on [Whisper Streaming](https://github.com/ufal/whisper_streaming) and [SimulStreaming](https://github.com/ufal/SimulStreaming), allowing you to transcribe audio directly from your browser. WhisperLiveKit provides a complete backend solution for real-time speech transcription with a functional, simple and customizable frontend. Everything runs locally on your machine ✨
|
This project is based on [WhisperStreaming](https://github.com/ufal/whisper_streaming) and [SimulStreaming](https://github.com/ufal/SimulStreaming), allowing you to transcribe audio directly from your browser. WhisperLiveKit provides a complete backend solution for real-time speech transcription with a functional, simple and customizable frontend. Everything runs locally on your machine ✨
|
||||||
|
|
||||||
### 🔄 Architecture
|
### 🔄 Architecture
|
||||||
|
|
||||||
|
|
@ -35,7 +35,7 @@ WhisperLiveKit consists of three main components:
|
||||||
- **✅ Confidence Validation** – Immediately validate high-confidence tokens for faster inference (WhisperStreaming only)
|
- **✅ Confidence Validation** – Immediately validate high-confidence tokens for faster inference (WhisperStreaming only)
|
||||||
- **👁️ Buffering Preview** – Displays unvalidated transcription segments (not compatible with SimulStreaming yet)
|
- **👁️ Buffering Preview** – Displays unvalidated transcription segments (not compatible with SimulStreaming yet)
|
||||||
- **✒️ Punctuation-Based Speaker Splitting [BETA]** - Align speaker changes with natural sentence boundaries for more readable transcripts
|
- **✒️ Punctuation-Based Speaker Splitting [BETA]** - Align speaker changes with natural sentence boundaries for more readable transcripts
|
||||||
- **⚡ SimulStreaming Backend** - Ultra-low latency transcription using state-of-the-art AlignAtt policy. To use, please copy [simul_whisper](https://github.com/ufal/SimulStreaming/tree/main/simul_whisper) content into `whisperlivekit/simul_whisper` . You must comply with the [Polyform license](https://github.com/ufal/SimulStreaming/blob/main/LICENCE.txt) !!
|
- **⚡ SimulStreaming Backend** - Ultra-low latency transcription using state-of-the-art AlignAtt policy. The code is not directly included in the repo : To use, please copy [simul_whisper](https://github.com/ufal/SimulStreaming/tree/main/simul_whisper) content into `whisperlivekit/simul_whisper` . ⚠️ You must comply with the [Polyform license](https://github.com/ufal/SimulStreaming/blob/main/LICENCE.txt)
|
||||||
|
|
||||||
|
|
||||||
## 📖 Quick Start
|
## 📖 Quick Start
|
||||||
|
|
@ -132,7 +132,7 @@ whisperlivekit-server --model tiny.en
|
||||||
whisperlivekit-server --host 0.0.0.0 --port 8000 --model medium --diarization --language auto
|
whisperlivekit-server --host 0.0.0.0 --port 8000 --model medium --diarization --language auto
|
||||||
|
|
||||||
# SimulStreaming backend for ultra-low latency
|
# SimulStreaming backend for ultra-low latency
|
||||||
whisperlivekit-server --backend simulstreaming-whisper --model large-v3 --frame-threshold 20
|
whisperlivekit-server --backend simulstreaming --model large-v3 --frame-threshold 20
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ def parse_args():
|
||||||
"--backend",
|
"--backend",
|
||||||
type=str,
|
type=str,
|
||||||
default="faster-whisper",
|
default="faster-whisper",
|
||||||
choices=["faster-whisper", "whisper_timestamped", "mlx-whisper", "openai-api", "simulstreaming-whisper"],
|
choices=["faster-whisper", "whisper_timestamped", "mlx-whisper", "openai-api", "simulstreaming"],
|
||||||
help="Load only this backend for Whisper processing.",
|
help="Load only this backend for Whisper processing.",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
|
|
@ -152,7 +152,7 @@ def parse_args():
|
||||||
parser.add_argument("--ssl-keyfile", type=str, help="Path to the SSL private key file.", default=None)
|
parser.add_argument("--ssl-keyfile", type=str, help="Path to the SSL private key file.", default=None)
|
||||||
|
|
||||||
# SimulStreaming-specific arguments
|
# SimulStreaming-specific arguments
|
||||||
simulstreaming_group = parser.add_argument_group('SimulStreaming arguments (only used with --backend simulstreaming-whisper)')
|
simulstreaming_group = parser.add_argument_group('SimulStreaming arguments (only used with --backend simulstreaming)')
|
||||||
|
|
||||||
simulstreaming_group.add_argument(
|
simulstreaming_group.add_argument(
|
||||||
"--frame-threshold",
|
"--frame-threshold",
|
||||||
|
|
|
||||||
27
whisperlivekit/simul_whisper/dual_license_simulstreaming.md
Normal file
27
whisperlivekit/simul_whisper/dual_license_simulstreaming.md
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
|
||||||
|
📄 SimulStreaming (https://github.com/ufal/SimulStreaming) Licence
|
||||||
|
|
||||||
|
SimulStreaming is dual-licensed:
|
||||||
|
|
||||||
|
🔹 Non-Commercial Use
|
||||||
|
|
||||||
|
You may use SimulStreaming under the **PolyForm Noncommercial License 1.0.0** if you
|
||||||
|
obtain the code through the GitHub repository. This license is **free of charge**
|
||||||
|
and comes with **no obligations** for non-commercial users.
|
||||||
|
|
||||||
|
🔸 Commercial Use
|
||||||
|
|
||||||
|
Understanding who uses SimulStreaming commercially helps us improve and
|
||||||
|
prioritize development. Therefore, we want to **require registration** of those who acquire a commercial licence.
|
||||||
|
|
||||||
|
We plan to make the commercial licenceses **affordable** to SMEs and individuals. We
|
||||||
|
are considering to provide commercial licenses either for free or for symbolic
|
||||||
|
one-time fee, and maybe also provide additional support. You can share your preference via the [questionnaire](https://forms.cloud.microsoft/e/7tCxb4gJfB).
|
||||||
|
|
||||||
|
You can also leave your contact [there](https://forms.cloud.microsoft/e/7tCxb4gJfB) to be notified when the commercial licenses become
|
||||||
|
available.
|
||||||
|
|
||||||
|
✉️ Contact
|
||||||
|
|
||||||
|
[Dominik Macháček](https://ufal.mff.cuni.cz/dominik-machacek/), machacek@ufal.mff.cuni.cz
|
||||||
|
|
@ -316,7 +316,8 @@ class SimulStreamingASR(ASRBase):
|
||||||
def __init__(self, lan, modelsize=None, cache_dir=None, model_dir=None, logfile=sys.stderr, **kwargs):
|
def __init__(self, lan, modelsize=None, cache_dir=None, model_dir=None, logfile=sys.stderr, **kwargs):
|
||||||
if not SIMULSTREAMING_AVAILABLE:
|
if not SIMULSTREAMING_AVAILABLE:
|
||||||
raise ImportError("SimulStreaming dependencies are not available. Please install SimulStreaming requirements.")
|
raise ImportError("SimulStreaming dependencies are not available. Please install SimulStreaming requirements.")
|
||||||
|
with open("whisperlivekit/simul_whisper/dual_license_simulstreaming.md", "r") as f:
|
||||||
|
print("*"*80 + f.read() + "*"*80)
|
||||||
self.logfile = logfile
|
self.logfile = logfile
|
||||||
self.transcribe_kargs = {}
|
self.transcribe_kargs = {}
|
||||||
self.original_language = None if lan == "auto" else lan
|
self.original_language = None if lan == "auto" else lan
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ def backend_factory(args):
|
||||||
if backend == "openai-api":
|
if backend == "openai-api":
|
||||||
logger.debug("Using OpenAI API.")
|
logger.debug("Using OpenAI API.")
|
||||||
asr = OpenaiApiASR(lan=args.lan)
|
asr = OpenaiApiASR(lan=args.lan)
|
||||||
elif backend == "simulstreaming-whisper":
|
elif backend == "simulstreaming":
|
||||||
logger.debug("Using SimulStreaming backend.")
|
logger.debug("Using SimulStreaming backend.")
|
||||||
if not SIMULSTREAMING_AVAILABLE:
|
if not SIMULSTREAMING_AVAILABLE:
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
|
|
@ -128,7 +128,7 @@ def backend_factory(args):
|
||||||
|
|
||||||
language = args.lan
|
language = args.lan
|
||||||
if args.task == "translate":
|
if args.task == "translate":
|
||||||
if backend != "simulstreaming-whisper":
|
if backend != "simulstreaming":
|
||||||
asr.set_translate_task()
|
asr.set_translate_task()
|
||||||
tgt_language = "en" # Whisper translates into English
|
tgt_language = "en" # Whisper translates into English
|
||||||
else:
|
else:
|
||||||
|
|
@ -142,7 +142,7 @@ def backend_factory(args):
|
||||||
return asr, tokenizer
|
return asr, tokenizer
|
||||||
|
|
||||||
def online_factory(args, asr, tokenizer, logfile=sys.stderr):
|
def online_factory(args, asr, tokenizer, logfile=sys.stderr):
|
||||||
if args.backend == "simulstreaming-whisper":
|
if args.backend == "simulstreaming":
|
||||||
if not SIMULSTREAMING_ONLINE_AVAILABLE:
|
if not SIMULSTREAMING_ONLINE_AVAILABLE:
|
||||||
raise ImportError("SimulStreaming online processor is not available.")
|
raise ImportError("SimulStreaming online processor is not available.")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue