]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
twitch.sh : various fixes and polishing
authorGeorgi Gerganov <redacted>
Thu, 8 Dec 2022 17:17:24 +0000 (19:17 +0200)
committerGeorgi Gerganov <redacted>
Thu, 8 Dec 2022 17:20:04 +0000 (19:20 +0200)
- check if streamlink is installed
- fix audio chunking
- change default threads to 4

examples/livestream.sh
examples/twitch.sh

index c64b004f259ab0d23ad7789556cffe112485fb9c..e24d0deba1d05fec59c8c27fded90bb5efd44c36 100755 (executable)
@@ -1,15 +1,33 @@
 #!/bin/bash
-set -eo pipefail
+#
 # Transcribe audio livestream by feeding ffmpeg output to whisper.cpp at regular intervals
 # Idea by @semiformal-net
 # ref: https://github.com/ggerganov/whisper.cpp/issues/185
 #
 
+set -eo pipefail
+
 url="http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/ak/bbc_world_service.m3u8"
 fmt=aac # the audio format extension of the stream (TODO: auto detect)
 step_s=30
 model="base.en"
 
+check_requirements()
+{
+    if ! command -v ./main &>/dev/null; then
+        echo "whisper.cpp main executable is required (make)"
+        exit 1
+    fi
+
+    if ! command -v ffmpeg &>/dev/null; then
+        echo "ffmpeg is required (https://ffmpeg.org)"
+        exit 1
+    fi
+}
+
+check_requirements
+
+
 if [ -z "$1" ]; then
     echo "Usage: $0 stream_url [step_s] [model]"
     echo ""
index 7a5ecb5aa91a85d8709050a4e3117de1d9457d8b..c185fb24f1632568930ba8f6a872ac9edc48793e 100755 (executable)
@@ -1,9 +1,18 @@
 #!/bin/bash
+#
+# Transcribe twitch.tv livestream by feeding audio input to whisper.cpp at regular intervals
+# Thanks to @keyehzy
+# ref: https://github.com/ggerganov/whisper.cpp/issues/209
+#
+# The script currently depends on the third-party tool "streamlink"
+# On Mac OS, you can install it via "brew install streamlink"
+#
+
 set -eo pipefail
 
 step=10
 model=base.en
-threads=1
+threads=4
 
 help()
 {
@@ -18,6 +27,26 @@ help()
     echo
 }
 
+check_requirements()
+{
+    if ! command -v ./main &>/dev/null; then
+        echo "whisper.cpp main executable is required (make)"
+        exit 1
+    fi
+
+    if ! command -v streamlink &>/dev/null; then
+        echo "streamlink is required (https://streamlink.github.io)"
+        exit 1
+    fi
+
+    if ! command -v ffmpeg &>/dev/null; then
+        echo "ffmpeg is required (https://ffmpeg.org)"
+        exit 1
+    fi
+}
+
+check_requirements
+
 while getopts ":s:m:t:h" option; do
     case $option in
        s)
@@ -58,6 +87,7 @@ set +e
 echo "Starting..."
 
 i=0
+SECONDS=0
 while true
 do
     err=1
@@ -72,7 +102,8 @@ do
 
     ./main -t $threads -m ./models/ggml-$model.bin -f /tmp/whisper-live.wav --no-timestamps -otxt 2> /tmp/whispererr | tail -n 1
 
-    sleep 1
-
+    while [ $SECONDS -lt $((($i+1)*$step)) ]; do
+        sleep 1
+    done
     ((i=i+1))
 done