Whisper を使用した無料の AI 音声文字起こしプログラムの作成

Patricia Arquette
リリース: 2024-10-24 08:13:02
オリジナル
933 人が閲覧しました

最近のメタコネクトでマーク・ザッカーバーグ氏は言及しました

音声は、テキストよりも AI と対話するはるかに自然な方法になると思います。

私もこれに全面的に同意します。また、特に今日のほとんどの AI ソリューションに何らかのチャットが組み込まれている場合には、質問を入力するよりもはるかに高速です。

このブログでは、OpenAI の Whisper モデルを使用して録音をテキストに転写する API と簡単な Web サイトを作成します。

始めましょう!


API ブループリント

まず、API を作成する必要があります。これには、transcribe_audio

と呼ぶメソッドが 1 つだけ含まれます。

次のモジュールをインストールしましょう

pip install fastapi uvicorn python-multipart
ログイン後にコピー
ログイン後にコピー

ブループリントのコードは次のようになります:

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse

app = FastAPI()

@app.post("/transcribe-audio/")
async def transcribe_audio(file: UploadFile = File(...)):
    try:
        transcribed_text = "Call Whisper here"

        return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text})

    except Exception as e:
        return JSONResponse(content={"error": str(e)}, status_code=500)
ログイン後にコピー
ログイン後にコピー
  • transcribe-audio という単一のエンドポイントは、言語と文字起こしされたテキストを返します
  • 例外がある場合は、エラーが返されます。

AIの部分

セットアップウィスパー

私は CUDA 固有のバージョンの PyTorch と torchaudio をダウンロードすることにしました

pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
ログイン後にコピー
ログイン後にコピー

もう 1 つ注意すべき点は、Nvidia GPU を使用している場合、GPU を使用するには、このアプリケーションの CUDA ドライバーをインストールする必要があることです。そうしないと、CPU が実行対象となり、結果が遅くなります。

次に、FASTAPI とトランスフォーマー、アクセラレータ、および numpy<2; をインストールします。 numpy の下位バージョンを使用する理由は、torch で実行中の警告を回避するためです。

pip install transformers accelerate "numpy<2"
ログイン後にコピー

最後に、git から Whisper をダウンロードします。これがモデルをインストールする最も簡単な方法であることがわかりました:

pip install git+https://github.com/openai/whisper.git
ログイン後にコピー

すべてがインストールされたので、ささやきモデルをセットアップします

  • 必要なモジュールをインポートします
  • 音声ファイルをアップロードする一時ディレクトリを設定します
  • 現在のデバイスが CUDA デバイスかどうかを確認します
  • 「中」のささやきモデルをロードします。モデルの完全なリストについては、ここで確認できます
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse

import torch

import whisper

from pathlib import Path
import os

# Directory to save uploaded files
UPLOAD_DIR = Path("./uploaded_audios")
UPLOAD_DIR.mkdir(parents=True, exist_ok=True)

# check if the device is a cuda device, else use CPU
device = "cuda:0" if torch.cuda.is_available() else "cpu"
print(f"Using Device: {device}")

# for a full list of models see https://github.com/openai/whisper?tab=readme-ov-file#available-models-and-languages
model = whisper.load_model("medium", device=device)

app = FastAPI()
ログイン後にコピー

ここで、uvicorn main:app --reload を使用してアプリケーションを実行すると、モデルが正常にロードされたことがわかります (選択したモデルによっては時間がかかる場合があります)。また、CUDA ドライバーをインストールしている場合は、ログに「Using Device: cuda:0」と表示されます

転写

モデルを使用して文字起こしを実行するために、transcribe_audio メソッドを編集します

  • アップロードしたファイルを上で作成したアップロード ディレクトリに保存します
  • モデルで Transcribe メソッドを呼び出します
  • 結果からテキストと言語を抽出し、応答で返します
  • 最後に、アップロードしたファイルを削除します
@app.post("/transcribe-audio/")
async def transcribe_audio(file: UploadFile = File(...)):
    try:
       # Path to save the file
        file_path = f"{UPLOAD_DIR}/{file.filename}"

        # Save the uploaded audio file to the specified path
        with open(file_path, "wb") as f:
            f.write(await file.read())

        # transcribe the audio using whisper model
        result = model.transcribe(file_path)

        # Extract the transcription text from the result
        transcribed_text = result['text']

        return JSONResponse(content={"lang": result["language"], "transcribed_text": transcribed_text})

    except Exception as e:
        print(e.__cause__)
        return JSONResponse(content={"error": str(e)}, status_code=500)

    finally:
        # Optionally, remove the saved file after transcription
        os.remove(file_path)
ログイン後にコピー

結果

ここで API を実行し、フォーム データ内の音声ファイルを使用して /transcribe-audio への POST リクエストを実行すると、次の結果が得られます:

pip install fastapi uvicorn python-multipart
ログイン後にコピー
ログイン後にコピー

「中」を選択した理由は、句読点が適切に機能するためです。次の例では、カンマ
を追加します。

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import JSONResponse

app = FastAPI()

@app.post("/transcribe-audio/")
async def transcribe_audio(file: UploadFile = File(...)):
    try:
        transcribed_text = "Call Whisper here"

        return JSONResponse(content={"lang": "en", "transcribed_text": transcribed_text})

    except Exception as e:
        return JSONResponse(content={"error": str(e)}, status_code=500)
ログイン後にコピー
ログイン後にコピー

さまざまな言語も理解できます

pip install torch==1.11.0+cu113 torchaudio===0.11.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
ログイン後にコピー
ログイン後にコピー

単純なフロントエンド統合の追加

AIは素晴らしいです。この API をテストするための簡単な Web サイトを作成するように依頼したところ、私を助けるために多くのコードが逆流されました。 ChatGPT に感謝します。

コードは私の GitHub にありますが、最終製品は次のようになります。

長いテキストの省略されたGIF:

Creating a Free AI voice-to-text transcription Program using Whisper

私はスペイン語に挑戦しています:

Creating a Free AI voice-to-text transcription Program using Whisper


結論と教訓

サポートするハードウェアがある場合、事前トレーニングされたモデルの使用は非常に簡単に実装できます。私の場合は、Intel 14700K CPU と GTX 1080ti GPU を搭載していました。 GPU が少し古いにもかかわらず、それでも印象的な結果が得られました。予想よりもずっと速かったです。 30 秒の音声を約 4 ~ 5 秒で書き起こします。

メタコネクトイベントでは、マーク・ザッカーバーグ氏がスペイン語話者と会話することで、新しいAIを搭載したスマートグラスをデモンストレーションし、グラスには各人の言語で字幕が表示されました。かなりかっこいいですね! Whisper を使用するとこれが可能ですが、大型モデルでのみ可能です。あるいは、DeepL などの外部ライブラリを使用して、文字起こし後に翻訳を実行することもできます。

さて、これをメガネの中にどうやって入れるのでしょうか? ?

これを追加するのに最適なプロジェクトは、OS にインストールされ、マクロ キーの押下またはそれに類するものをリッスンして、オンデマンドでオーディオ録音をテキスト フィールドに入力するサービスです。これは素晴らしいサイドプロジェクトになるかもしれません?ウィスパー ミディアムはそれほど大きくありませんが、これをウィスパーの「ターボ」または「タイニー」に置き換えることもできます。これらはモバイルデバイスでも実行できると思います。ああ、またサイドプロジェクト?

このブログが気に入っていただけましたら、ぜひ「いいね!」とコメントをお願いします。 AI モデルをローカルで実行することにさらに踏み込んで、どのような可能性があるかを確認していきます。

こんにちは? LinkedIn で私に連絡してください!

以上がWhisper を使用した無料の AI 音声文字起こしプログラムの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!