石小疯 发表于 2026-2-24 09:04:31

实战whisper:当地化摆设通用语音辨认模子

媒介

        Whisper 是一种通用语音辨认模子。它是在大量差别音频数据集上举行练习的,也是一个多任务模子,可以实行多语言语音辨认、语音翻译和语言辨认。
        这里呢,我将给出我的一些代码,来资助你尽快实现【语音转笔墨】的服务摆设。
        以下是该AI模块的详细利用方式:
        https://github.com/openai/whisper

心得

        这是一个不错的语言模子,它支持主动辨认语音语种,雷同中文、英文、日语等它都能胜任,而且可以实现其他语种转英语翻译的功能,支持附加时间戳的字幕导出功能......
        总体来说,它乃至可以与市面上领头的语言辨认功能相媲美,而且紧张它是开源的。
        这是它的一些模子巨细、须要的GPU显存、相对实行速率的对应表
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvYmE5MGY4MzY3MmZhYzdkYzRhOWEwZDhiNzdhYzgyM2UucG5n
         这是它在下令行模式下的利用方式,这对想要尝尝鲜的小搭档们来说,已经够了
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9ibG9nX21pZ3JhdGUvYmQ0ZDdlMDRhMjI2ODc4N2EyY2FkYTQ5NzQyZjAwNzMucG5n
        tips:
        1、初次安装完毕whisper后,实行指令时会给你安装你所选的模子,small、medium等,我的显卡已经不支持我利用medium了 
        2、关于GPU版本的pytorch,可以参考如下教程(利用CPU版本会比力慢)
        https://blog.csdn.net/G541788_/article/details/135437236

python调用 

        作为一名python从业者,我非常荣幸可以大概读懂一些模块的干系利用,这里我通过修改了一些模块源码调用,实现了在python代码中一键导出语音字幕的功能(这些功能在下令行中已拥有,但是我渴望在利用python脚本model方法后再实现该功能,大概这些你并不须要,但随意吧)。
        这个模块的cli()方法大概能更好实现这一功能(由于下令行模式,实在就是运行了这个方法,但我根据履历和现实代码来看,这会重复加载model,导致不须要的资源斲丧)。
         1、__init__.py中加入get_writer,让你能通过whisper模块去利用这个方法
from .transcribe import get_writer         2、干系功能代码
import os.path
import whisper
import time

# 这是语种langue参数的解释,或许对你的选择有帮助
LANGUAGES = {
    "en": "english",
    "zh": "chinese",
    "de": "german",
    "es": "spanish",
    "ru": "russian",
    "ko": "korean",
    "fr": "french",
    "ja": "japanese",
    "pt": "portuguese",
    "tr": "turkish",
    "pl": "polish",
    "ca": "catalan",
    "nl": "dutch",
    "ar": "arabic",
    "sv": "swedish",
    "it": "italian",
    "id": "indonesian",
    "hi": "hindi",
    "fi": "finnish",
    "vi": "vietnamese",
    "he": "hebrew",
    "uk": "ukrainian",
    "el": "greek",
    "ms": "malay",
    "cs": "czech",
    "ro": "romanian",
    "da": "danish",
    "hu": "hungarian",
    "ta": "tamil",
    "no": "norwegian",
    "th": "thai",
    "ur": "urdu",
    "hr": "croatian",
    "bg": "bulgarian",
    "lt": "lithuanian",
    "la": "latin",
    "mi": "maori",
    "ml": "malayalam",
    "cy": "welsh",
    "sk": "slovak",
    "te": "telugu",
    "fa": "persian",
    "lv": "latvian",
    "bn": "bengali",
    "sr": "serbian",
    "az": "azerbaijani",
    "sl": "slovenian",
    "kn": "kannada",
    "et": "estonian",
    "mk": "macedonian",
    "br": "breton",
    "eu": "basque",
    "is": "icelandic",
    "hy": "armenian",
    "ne": "nepali",
    "mn": "mongolian",
    "bs": "bosnian",
    "kk": "kazakh",
    "sq": "albanian",
    "sw": "swahili",
    "gl": "galician",
    "mr": "marathi",
    "pa": "punjabi",
    "si": "sinhala",
    "km": "khmer",
    "sn": "shona",
    "yo": "yoruba",
    "so": "somali",
    "af": "afrikaans",
    "oc": "occitan",
    "ka": "georgian",
    "be": "belarusian",
    "tg": "tajik",
    "sd": "sindhi",
    "gu": "gujarati",
    "am": "amharic",
    "yi": "yiddish",
    "lo": "lao",
    "uz": "uzbek",
    "fo": "faroese",
    "ht": "haitian creole",
    "ps": "pashto",
    "tk": "turkmen",
    "nn": "nynorsk",
    "mt": "maltese",
    "sa": "sanskrit",
    "lb": "luxembourgish",
    "my": "myanmar",
    "bo": "tibetan",
    "tl": "tagalog",
    "mg": "malagasy",
    "as": "assamese",
    "tt": "tatar",
    "haw": "hawaiian",
    "ln": "lingala",
    "ha": "hausa",
    "ba": "bashkir",
    "jw": "javanese",
    "su": "sundanese",
    "yue": "cantonese",
}

# 以下命令将使用medium模型转录音频文件中的语音:
#
# whisper audio.flac audio.mp3 audio.wav --model medium
# 默认设置(选择模型small)非常适合转录英语。要转录包含非英语语音的音频文件,您可以使用以下选项指定语言--language:
#
# whisper japanese.wav --language Japanese
# 添加--task translate会将演讲翻译成英语:
#
# whisper japanese.wav --language Japanese --task translate

# 其他语言转录为英语
# whisper "E:\voice\恋愛サーキュレーション_(Vocals)_(Vocals).wav" --language ja --task translate

# 这个任务是将audio_files内的声音文件进行字幕导出,以时间戳为单位存储到captions/目录里
audio_files =
model = whisper.load_model("small")
output_format = 'all'

writer_args = {
    "highlight_words": False,
    "max_line_count": None,
    "max_line_width": None,
    "max_words_per_line": None,
}

for audio_file in audio_files:
    now_timestamp = str(int(time.time()))
    save_path = f'captions/{now_timestamp}'
    if not os.path.exists(save_path):
      os.mkdir(save_path)

    # language可选
    # 中文zh,日语ja,英语en
    result = model.transcribe(audio_file, language='ja')

    writer = whisper.get_writer(output_format, save_path)
    writer(result, audio_file, **writer_args)

    print('done: ', audio_file )
页: [1]
查看完整版本: 实战whisper:当地化摆设通用语音辨认模子