openai のささやき音声認識の紹介

openAI が chatgpt をリリースしましたが、ハローはしばらく同じです。しかし、openAI にはこのプロジェクトだけでなく、他のプロジェクトも私たちの調査と研究に非常に価値があります。

今日はこのささやきプロジェクトについて話しましょう
https://github.com/openai/whisper

ta は音声認識に関するものです。大規模な弱い監視による音声認識の方法を提案します。弱い監視とは、不完全または不正確なラベルまたは注釈を使用してモデルをトレーニングする方法を指します。この方法では、時間と労力のかかるデータの手動ラベル付けを回避でき、より多くのデータを使用してモデルのパフォーマンスを向上させることもできます。

この方法では、大量のラベルなし音声データと一部のラベル付きデータを使用して深層学習モデルをトレーニングします。このモデルは、音声信号から特徴を抽出してテキストに変換する方法を自動的に学習できます。

公式の説明を見てみましょう: (理解できるかどうかは別として、とにかく私には理解できません)
ここに画像の説明を挿入

著者は Python バージョン 3.9.9 と PyTorch バージョン 1.10.1 を使用していますが、コード ベースは Python 3.8 ~ 3.10 および最新の PyTorch バージョンと互換性がある必要があります。(自分で3.11を試してみましたが互換性がなかったので素直に3.9を使います)

使い方もとても簡単で、ティアオク男子のお気に入りです。

ステップ 1: Python ライブラリをインストールする

python3 -m pip install openai-whisper

2番目のステップはFFmpegをインストールすることです

# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg

個人的には Scoop を使って FFmpeg を Windows にインストールすることをお勧めします。Chocolatey は面倒すぎます

3 番目のステップは、使用するモデルを選択することです。

公式によると、5つのモデルがあり、そのうち4つは英語専用モデルだが、英語のみの実測では中国語もサポートできる(中国語をサポートできるのはベーステストのみで、他のものはテストされていないが、同様にサポートされるはずである)可能)
ここに画像の説明を挿入

中国語にも対応していますが、物足りないところもあり、中国語の認識誤り率(WER(Word Error Rate))は決して低くなく、対応言語の中でおそらく真ん中くらいです。
ここに画像の説明を挿入

第4ステップ 具体的な使い方

いくつかの方法があります:
1. コマンドラインモード

whisper audio.flac audio.mp3 audio.wav --model medium
  • 英語以外の言語の場合は、-- language パラメーターを追加します (日本語など)。
whisper japanese.wav --language Japanese

サポートされている言語はかなり多くあります

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",
}

  • -task translation パラメーターを使用すると、音声コンテンツが英語に翻訳されます。
whisper japanese.wav --language Japanese --task translate
  • 他にも問題がある場合は、help コマンドを使用してください。
whisper --help

2.Pythonコードモード

import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

モデルを初めてロードするときは、オンラインになってモデル (つまり、上で紹介した 5 つのモデル) をプルします。モデルが異なればサイズも異なります。プルが完了すると、再度使用するときにインターネットに接続する必要はありません。

tiny------base------small------medium---large、モデルのスケールは小さいものから大きいものまであり、精度はますます高くなっていますが、使用されるリソースはも大きくなってます。自分のニーズに応じて選択してください。一般的には小さい方が良いです。

以上で本文は終わりです。

私が考える利用シーンとスロットについてお話します

使用するシーン:

1. ビデオから音声を抽出し、テキストに変換して録画します;
2. レコーダーから音声を抽出し、コンテンツをすぐに表示します (音声が長すぎて、テキストの読み取りほど速くない場合があります) 3. ビデオを作成する
場合または自分で音声を作成する場合は、字幕の生成も使用できると思います。

アドバンテージ:

無料、ネットワーク切断時(環境構築時)でも利用可能、安全・安心、漏洩の心配なし

スロット:

リアルタイム音声のサポートや音声合成のサポートはありません。

実際には、ローカルのリアルタイム音声テキスト変換を使用し、テキストに変換された後に ChatGPT に送信し、ChatGPT が結果を返し、音声を合成して再生したいと考えています。しかし、taは現状ではリアルタイムと音声合成ができません。

おすすめ

転載: blog.csdn.net/xkukeer/article/details/130227944