Skip to content

Commit

Permalink
twitch.sh : various fixes and polishing
Browse files Browse the repository at this point in the history
- check if streamlink is installed
- fix audio chunking
- change default threads to 4
  • Loading branch information
ggerganov committed Dec 8, 2022
1 parent 9e5f3dd commit 5682262
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
20 changes: 19 additions & 1 deletion examples/livestream.sh
Original file line number Diff line number Diff line change
@@ -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 ""
Expand Down
37 changes: 34 additions & 3 deletions examples/twitch.sh
Original file line number Diff line number Diff line change
@@ -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()
{
Expand All @@ -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)
Expand Down Expand Up @@ -58,6 +87,7 @@ set +e
echo "Starting..."

i=0
SECONDS=0
while true
do
err=1
Expand All @@ -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

0 comments on commit 5682262

Please sign in to comment.