ホームページ >バックエンド開発 >Python チュートリアル >Whisper を使用した無料の AI 音声文字起こしプログラムの作成
最近のメタコネクトでマーク・ザッカーバーグ氏は言及しました
音声は、テキストよりも AI と対話するはるかに自然な方法になると思います。
私もこれに全面的に同意します。また、特に今日のほとんどの AI ソリューションに何らかのチャットが組み込まれている場合には、質問を入力するよりもはるかに高速です。
このブログでは、OpenAI の Whisper モデルを使用して録音をテキストに転写する API と簡単な Web サイトを作成します。
始めましょう!
まず、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)
私は 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
すべてがインストールされたので、ささやきモデルをセットアップします
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 メソッドを編集します
@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:
私はスペイン語に挑戦しています:
サポートするハードウェアがある場合、事前トレーニングされたモデルの使用は非常に簡単に実装できます。私の場合は、Intel 14700K CPU と GTX 1080ti GPU を搭載していました。 GPU が少し古いにもかかわらず、それでも印象的な結果が得られました。予想よりもずっと速かったです。 30 秒の音声を約 4 ~ 5 秒で書き起こします。
メタコネクトイベントでは、マーク・ザッカーバーグ氏がスペイン語話者と会話することで、新しいAIを搭載したスマートグラスをデモンストレーションし、グラスには各人の言語で字幕が表示されました。かなりかっこいいですね! Whisper を使用するとこれが可能ですが、大型モデルでのみ可能です。あるいは、DeepL などの外部ライブラリを使用して、文字起こし後に翻訳を実行することもできます。
さて、これをメガネの中にどうやって入れるのでしょうか? ?
これを追加するのに最適なプロジェクトは、OS にインストールされ、マクロ キーの押下またはそれに類するものをリッスンして、オンデマンドでオーディオ録音をテキスト フィールドに入力するサービスです。これは素晴らしいサイドプロジェクトになるかもしれません?ウィスパー ミディアムはそれほど大きくありませんが、これをウィスパーの「ターボ」または「タイニー」に置き換えることもできます。これらはモバイルデバイスでも実行できると思います。ああ、またサイドプロジェクト?
このブログが気に入っていただけましたら、ぜひ「いいね!」とコメントをお願いします。 AI モデルをローカルで実行することにさらに踏み込んで、どのような可能性があるかを確認していきます。
こんにちは? LinkedIn で私に連絡してください!
以上がWhisper を使用した無料の AI 音声文字起こしプログラムの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。