CheshireCC / faster-whisper-GUI

faster_whisper GUI with PySide6
GNU Affero General Public License v3.0
1.64k stars 101 forks source link

关于语音识别 (内含自用参数) #228

Open ailenneko opened 1 month ago

ailenneko commented 1 month ago

最近了解到 OpenAI 的 whisper 语音转文本大模型了,于是就用了一下.因为是电脑小白,所以 OpenAI 官方的那些需要部署环境和用命令和代码操控的方式就放弃了,转而试用了一下 faster-whisper 和 WhisperDesktop.

我是想准备拿这个用来生成日本动漫里的日语字幕的,但是我发现用 faster-whisper 怎么也达不到 WhisperDesktop. 那样的生成效果.

WhisperDesktop 方面:

使用的是 ggml-model-whisper-large.bin 模型(说是v3模型,推测应该是 float32 的) 其中另外两个设置是 Wave64, always 和 Don't reshape tensors. 生成速度很快,24分钟的一集番剧2分钟就能生成好,单词识别准确度很高,英文,歌词,语气词全都能拿捏,甚至可以识别出例如关门声,来电声,多人一同发出的声音和内心的想法时的声音,而且标点符号也使用的很好,语气词也90%能捕捉到.简直是每用一次都会有一次惊喜. 缺点就是有时候词语意思会扯远,而且有时候因为用力过头导致直接在字幕前面加上括号说话人括号,乱用内心独白的格式,频繁使用字幕和对话偶尔会对不上,而且有无限循环的可能性(而且这个可能性非常高)

faster-whisper 方面:

分别使用了 float32 和 float16 的 v3 模型,也花费了几十个小时在上面调了很多参数,但就是达不到 WhisperDesktop 那样的效果. VAD 因为非常容易把语气词掐掉所以没开,单词级时间戳这个设置在我这里很"微妙",似乎关闭之后能更准确的识别出语气词和歌词,生成速度也会变快,但是更容易产生像 WhisperDesktop 那样的缺点 幻听静音阈值和静音阈值都设置为0了,搜索耐心设置为了稍微高一点的1.25,gzip压缩比阈值直接设置到了恐怖的12,采样概率阈值设置成了-1.25,循环提示打开,重复惩罚1.2,分块大小这个真的很难设置,这个我感觉最能影响词语准确性和小部分的语气词质量,但是性能开销也是最大的,而且两个数字的差距就能造成很大的质量差别,目前我主要用5,10,18,24,32.10在 float32 的 v3 下约等于 WhisperDesktop 的速度.因为这些设置的简介还是有点太费脑子搞不清楚逻辑所以不知道怎么调啊哈哈哈

faster-whisper 目前我调出来的勉强只能识别出一部分歌词和语气词和英语,似乎这三个不能找到一个很好的平衡点.似乎也不能生成像在字幕开头表示说话人呀内心独白式的文字表现呀为了情感丰富而加很多标点符号之类的效果

我真的很好奇 faster-whisper 可不可以调参数调成像 WhisperDesktop 那样的质量,同时也很好奇 WhisperDesktop 有没有自己的参数,如果有,拿来照搬能不能实现

我的参数:

这是我到现在为止最满意的参数,基本能达到 WhisperDesktop 的水平(除了识别人声之外的声音识别功能之外都能勉强做到了),还有一些缺点:有时候会忽略掉一段的声音,动漫里穿插的歌曲有时候也可能识别不出来

注意:需要以UTC-8保存/加载 该配置文件打开了"使用V3模型"开关,使用其他模型时请关闭

更新时间: JST 2024/9/21 16:16

{
    "theme": "dark",
    "demucs": {
        "overlap": 0.25,
        "segment": 30.0,
        "tracks": 1
    },
    "model_param": {
        "localModel": true,
        "onlineModel": false,
        "model_path": "",
        "modelName": 6,
        "use_v3_model": true,
        "device": 1,
        "deviceIndex": "0",
        "preciese": 5,
        "thread_num": "24",
        "num_worker": "1",
        "download_root": "",
        "local_files_only": true
    },
    "vad_param": {
        "use_VAD": false,
        "threshold": 0.5,
        "minSpeechDuration": "250",
        "minSilenceDuration": "100",
        "maxSpeechDuration": "30",
        "speechPad": "2000"
    },
    "setting": {
        "saveConfig": true,
        "autoLoadModel": false,
        "language": 0,
        "huggingface_user_token": "",
        "autoGoToOutputPage": 2,
        "autoClearTempFiles": false,
        "themeColor": "#cb457d"
    },
    "Transcription_param": {
        "aggregate_contents": false,
        "language": 10,
        "task": false,
        "beam_size": "10",
        "best_of": "5",
        "patience": "1.0",
        "length_penalty": "2.0",
        "temperature": "0.2,0.4,0.6,0.8,1.0",
        "compression_ratio_threshold": "2.4",
        "log_prob_threshold": "-1.0",
        "no_speech_threshold": "0",
        "condition_on_previous_text": true,
        "initial_prompt": "",
        "prefix": "",
        "suppress_blank": true,
        "suppress_tokens": "-1",
        "without_timestamps": false,
        "max_initial_timestamp": "9999999.0",
        "word_timestamps": false,
        "prepend_punctuations": "\"'“¿([{-",
        "append_punctuations": "\"'.。,,!!??::”)]}、",
        "repetition_penalty": "1.0",
        "no_repeat_ngram_size": "0",
        "prompt_reset_on_temperature": "0.5",
        "chunk_length": "30",
        "clip_mode": 0,
        "max_new_tokens": "448",
        "clip_timestamps": "",
        "hallucination_silence_threshold": "0",
        "hotwords": "这是一个日本动漫,请检测出所有语气词,使用更多标点符号来丰富情感,比如省略号,问号,句号,感叹号,破折号(... ? !)",
        "language_detection_threshold": "0.5",
        "language_detection_segments": "1"
    },
    "output_whisperX": {
        "tabMovable": true,
        "tabScrollable": false,
        "tabShadowEnabled": false,
        "tabMaxWidth": 230,
        "closeDisplayMode": 0,
        "whisperXMinSpeaker": 0,
        "whisperXMaxSpeaker": 0,
        "outputFormat": 5,
        "outputEncoding": 1
    }
}

里面的提示词可以替换或者加上角色名字,加了"使用标点符号丰富情感"之类的确实能提高这方面的能力 注意:这个只拿来试过日本动漫,不知道英语和中文以及其他语言的识别质量如何

拿来生成作为参考动漫:

星灵感应的语气词比较多,特别是有一个说话容易卡壳的主角,更能考验模型识别的能力(看模型能准确识别出多少个说出来的但又不是完整的单词),鹿乃子对单词准确性比较考究,剩下的则是平均的感觉

追加内容:

fishpigbird commented 1 week ago
ailenneko commented 1 week ago

嗯...这么说来,我这个配置文件很有可能只是对large-v3的float32版本进行特调的配置文件,还没考虑过其他模型的效果 (比较可惜的是 现在我看动漫一般都会找有中日双语字幕的了,可能以后不太会用到这个 所以配置文件不能及时更新了)