1 个不稳定版本
0.1.0 | 2024年3月28日 |
---|
562 在 文本处理
31KB
707 行
sttx
语音识别数据转换工具包。发音为"sticks"。
使用场景
处理 whisper.cpp
输出
whisper.cpp
是一款提供最先进语音识别功能的优秀软件。它是一个相当底层的程序,其输出不可完全配置。给定一个音频文件作为输入,它可以产生CSV、SRT或纯文本格式的文本,包括时间戳。
您可以通过最大长度标志(-ml
)来控制它提供的数据的分辨率。注意,除非启用了按单词分割标志(-sow
),否则长度的单位是标记。
whisper.cpp-i<输入> -ml1 -sow
然而,这最多只能让我们通过累积N个单词的块来限制输出。
sttx
的实用性基于这样一个观点:即使没有任何其他附加上下文,也可以将带时间戳的STT数据转换为更有用的表示形式。
在核心上,它提供了可堆叠的策略,将一系列带时间戳的语音事件减少为单个事件,利用这些事件(开始/结束时间戳和文本内容)是一个半群(例如,可以添加到自身的东西)的事实。
这些策略包括
--sentences
:直到下一个句子结束--lasting
:拼接,直到达到一定持续时间--max-silence
:直到事件间隙的总持续时间超过给定量--by-gap
:直到当前事件与下一个事件之间的间隙超过给定量--min-word-count
:直到结果的总词数超过给定数值--chunk-size
:下一个N个事件
例如,如果您有一个类似以下的事件序列
start,end,text
0,1000, Hel
1000,1100,lo
1100,2000, world
2000,2000,!
2500,3000, How
3100,3500, are
4100,5000, you
5000,5000,?
6300,6700, I'm
6800,7200, fine
7200,7200,","
7300,7500, thanks
7500,7500,!
默认情况下,sttx
将事件组合,而不将前一个事件的空白字符添加到之前的事件中。因此,如果没有参数,预期的输出将是
start,end,text
0,1100, Hello
1100,2000, world!
2500,3000, How
3100,3500, are
4100,5000, you?
6300,6700, I'm
6800,7200," fine,"
7300,7500, thanks!
使用 --sentences
标志,输出将是
start,end,text
0,2000, Hello world!
2500,5000, How are you?
6300,7500," I'm fine, thanks!"
并且 --sentences --chunk-size 2
将为您返回
start,end,text
0,5000, Hello world! How are you?
6300,7500," I'm fine, thanks!"
支持其他输出格式
--格式json
:
[
{
"start": 0,
"end": 5000,
"text": " Hello world! How are you?"
},
{
"start": 6300,
"end": 7500,
"text": " I'm fine, thanks!"
}
]
--格式srt
:
1
00:00:00,000 --> 00:00:05,000
Hello world! How are you?
2
00:00:06,300 --> 00:00:07,500
I'm fine, thanks!
用法
Usage: sttx transform [OPTIONS] <SOURCE>
Arguments:
<SOURCE>
Options:
-i, --input-format <input-format>
[default: csv-fix]
Possible values:
- csv-fix: same as csv, plus whisper.cpp formatting fix
- csv
- json
-f, --format <FORMAT>
[default: pretty]
[possible values: csv, json, srt, pretty]
-o, --output <SINK>
The path to which the program should write the output. Use `-` for stdout
[default: -]
--max-silence <MAX_SILENCE>
Concatenates until the accumulated delay between events exceeds the given duration
-s, --sentences
Concatenates up to the next sentence ending ('.', '!', or '?')
-w, --min-word-count <MIN_WORD_COUNT>
Concatenates until the total word count of the result exceeds the given value
-g, --by-gap <BY_GAP>
Concatenates until the delay until the start of the next event exceeds the given duration
-l, --lasting <LASTING>
Concatenates until the total duration of the result exceeds the given value
-c, --chunk-size <CHUNK_SIZE>
Concatenates up to N events
-h, --help
Print help (see a summary with '-h')
截至本文撰写日期(2024-03-25),whisper.cpp
的 CSV 输出似乎没有正确转义双引号。这个发现可能是我的错误,如果不是,我将提交一个问题。
依赖关系
约 3–4MB
约 68K SLoC