aboutsummaryrefslogtreecommitdiff
path: root/record-voice
blob: ce68cae4587f4b844a8f40c4a12f46236f42672b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env bash

set -euo pipefail

OUTPUT="voice"
BITRATE="128k"
FORMAT="mp3"

usage() {
    echo "Usage: $0 -o output_name [options]"
    echo
    echo "Options:"
    echo "  -o NAME        Output filename (without extension)"
    echo "  -b BITRATE     MP3 bitrate"
    echo "  -f FORMAT      Output format: mp3 or wav"
    echo "  -h             Show this help message"
    echo
    echo "Available MP3 bitrates:"
    echo "  64k    Low quality / smallest files"
    echo "  96k    Good for speech"
    echo "  128k   Very good speech quality (default)"
    echo "  192k   High quality"
    echo "  320k   Maximum MP3 quality"
    echo
    echo "Examples:"
    echo "  $0 -o meeting"
    echo "  $0 -o podcast -b 192k"
    echo "  $0 -o lecture -f wav"
    echo
    exit 0
}

while getopts "o:b:f:h" opt; do
    case "$opt" in
        o) OUTPUT="$OPTARG" ;;
        b) BITRATE="$OPTARG" ;;
        f) FORMAT="$OPTARG" ;;
        h) usage ;;
        *) usage ;;
    esac
done

FORMAT=$(echo "$FORMAT" | tr '[:upper:]' '[:lower:]')

case "$FORMAT" in
    mp3)
        FILE="${OUTPUT}.mp3"

        echo "Recording MP3 to: $FILE"
        echo "Bitrate: $BITRATE"
        echo "Press Ctrl+C to stop."
        echo

        ffmpeg \
            -f pulse \
            -i default \
            -ac 1 \
            -c:a libmp3lame \
            -b:a "$BITRATE" \
            "$FILE"
        ;;

    wav)
        FILE="${OUTPUT}.wav"

        echo "Recording WAV to: $FILE"
        echo "Press Ctrl+C to stop."
        echo

        ffmpeg \
            -f pulse \
            -i default \
            -ac 1 \
            "$FILE"
        ;;

    *)
        echo "Error: unsupported format '$FORMAT'"
        echo "Supported formats: mp3, wav"
        exit 1
        ;;
esac