GPTとWhisperを使用してパーソナライズされた音声アシスタントを作成する

GPTとWhisperを使用してパーソナライズされた音声アシスタントを作成する

翻訳者 | 朱 仙中

レビュー | Chonglou

導入

この記事は、ユーザーの好みに合わせてシンプルでありながら強力な音声アシスタントを作成するためのガイドとして作成されています。これを実現するために、Whisper と GPT という 2 つの強力なツールを使用します。 GPT とその機能についてはすでにご存知かもしれませんが、Whisper とは何であるかご存知ですか?

実際、Whisper は OpenAI によって開発された高度な音声認識モデルであり、正確な音声からテキストへの文字起こしを提供します。

コーディング手順を含め、サンプル プロジェクトの構築の各ステップについて説明します。最後に、音声アシスタントが稼働するようになります。

準備

AI APIキーを開く

すでに OpenAI API キーをお持ちの場合は、このセクションをスキップできます。

Whisper API と GPT API の両方にアクセスするには、OpenAI API キーが必要です。固定料金が必要な ChatGPT のサブスクリプションとは異なり、API キーはサービスの使用量に基づいて支払われます。

価格はかなり手頃です。執筆時点では、Whisper の料金は 1 分あたり 0.006 ドル、GPT (モデルは GPT-3.5-turbo) の料金は 1K トークンあたり 0.002 ドルです (トークンは約 0.75 語です)。

OpenAIのウェブサイト(著者自身の画像)

キーを取得するには、まず OpenAI の Web サイトでアカウントを作成します。ログインしたら、右上隅にある自分の名前をクリックし、「API キーの表示」を選択します。 「新しい秘密鍵を作成」ボタンをクリックすると、秘密鍵が表示されます。このキーは再度表示できないため、必ず保存してください。

サンプルプロジェクトが依存するサードパーティライブラリ

このセクションでは、プロジェクトに必要なオープン ソース コード ライブラリを紹介します。この記事のサンプル プロジェクトには、OpenAI が開発した Python ライブラリを使用してさまざまな AI タスクを実行するほか、pyttsx3 を使用して音声を生成したり、SoundDevice を使用してオーディオを録音および再生したり、numpy と scipy を使用して数学演算を実行したりすることが含まれます。新しいプロジェクトを開始するときはいつも、パッケージをインストールする前に新しい仮想環境を作成する必要があります。

サンプルプロジェクトコード構造

私たちのコードは単一のクラスを中心に構築され、合計で約 90 行のコードになります。 Python クラス構文の基本的な理解があることを前提としています。クラス全体の構造は次のようになります。

Listen メソッドは、ユーザーの音声入力をキャプチャし、Whisper を使用してテキストに変換する役割を担います。 Think メソッドは、テキストを GPT に送信し、自然言語の応答を生成する役割を担います。応答テキストを再生可能なオーディオに変換する役割を担うのが、speak メソッドです。

注: 上記の画像の右端の部分は、システムの GPT アシスタント部分 (自然言語応答を提供する役割を担う) を表しています。

次のプロセスは繰り返し可能であり、ユーザーは別のリクエストを発行することで会話を継続できます。

サンプルクラスに対応するコード構造(著者自身の画像)

__init__ 関数

この関数は、履歴の初期化と API キーの設定を担当します。

以前のメッセージを追跡するには履歴が必要です。これは本質的にはアシスタントの短期記憶に対応しており、会話の前半で言ったことを記憶することができます。

聞く機能

listen関数のワークフロー

この方法は、アシスタントの耳の機能に相当します。

listen 関数を使用すると、ユーザーからの入力を受け取ることができます。この機能は、マイクからの音声を録音し、それをテキストに書き起こす役割を果たします。

listen 関数の具体的な機能は次のとおりです。

  • オーディオを録音中に「Listening...」というメッセージを出力します。
  • サウンド デバイスを使用して、44100 Hz のサンプリング レートで 3 秒間 (または任意の長さ) のオーディオを録音します。
  • 録音したオーディオを NumPy 配列として一時 WAV ファイルに保存します。
  • OpenAI API の文字起こしメソッドを使用して、音声を Whisper に送信し、文字起こしを行います。
  • 転記が成功したことを確認するために、転記されたテキストをコンソールに出力します。
  • 転記されたテキストを文字列として返します。

この例では、アシスタントは 3 秒間聞き取りますが、必要に応じてその時間を変更できます。

思考機能

機能ワークフローを考える

実際、私たちのシステムのアシスタントの頭脳は GPT によって駆動されています。思考機能は、アシスタントが聞いた内容を受け取り、応答を詳しく説明する役割を担います。

応答コンテンツはローカル マシン上に作成されないことに注意することが重要です。テキストは、API 経由で処理するために OpenAI のサーバーに送信する必要があります。応答の内容は応答変数に保存され、ユーザー メッセージと応答の両方が履歴に追加されます。履歴はアシスタントの短期メモリであり、GPT モデルが応答を生成するためのコンテキストを提供する役割を果たします。

話す機能

話す機能のワークフロー

音声関数は、テキストを音声に変換し、ユーザーに対して再生する役割を担います。この関数は、テキストという 1 つのパラメータのみを受け入れます。このパラメータは、音声に変換するテキストを表す文字列である必要があります。

関数がテキスト文字列を引数として呼び出されると、コマンド engine=pyttsx3.init() を使用して pyttsx3 音声エンジンが初期化されます。このオブジェクトは、エンジンがテキストを音声に変換するために使用するメイン インターフェースです。

次に、この関数は、コマンド エンジンを使用して、提供されたテキストを音声に変換するように音声エンジンに指示します。これにより、提供されたテキストがキューに入れられ、読み上げられます(エンジンによって読み上げられます)。コマンド engine.runAndWait は、キューに入れられたコマンドを処理するようにエンジンに指示する役割を担います。

Pyttsx3 はすべてのテキストから音声への変換をローカルで処理する点に注目する価値があります。これは、システム遅延の点で大きな利点です。

最後の仕上げ

この時点で、システムのアシスタント部分は準備完了です。次に、ヘルパー オブジェクトを作成して会話を開始するだけです。

会話は無限ループとなり、ユーザーが「さようなら」を含む文を言うと終了します。

パーソナライズされた体験のヒント

全体的に、GPT アシスタントのカスタマイズは簡単です。私たちが構築したコードは非常にモジュール化されており、さまざまな機能を追加してカスタマイズできます。カスタマイズに役立つアイデアをいくつか紹介します。

  • アシスタントに役割を与える: 元のプロンプトを変更して、アシスタントに英語の先生、モチベーションスピーカー、またはあなたが思いつく他の役割を演じてもらいます。その他のアイデアについては、「Awesome ChatGPT Prompts」をご覧ください。
  • 言語の変更: 別の言語を使用しますか?問題ない!コード内の英語を希望の言語に変更するだけです。
  • アプリの構築: アシスタントをあらゆるアプリケーションに簡単に統合できます。
  • 個性を追加: カスタム応答を追加したり、さまざまなトーンや言語スタイルを使用したりすることで、アシスタントに独自の個性を与えます。
  • 他の API との統合: アシスタントを他の API と統合して、天気予報やニュースの更新などのより高度な機能を提供します。

結論は

この投稿では、OpenAI API キーを取得する方法について説明し、ユーザー入力をキャプチャし、応答を生成し、テキストを音声に変換して再生するために使用される listen、think、speak 関数のコード例を示しました。

この知識があれば、自分の特定のニーズに合った独自の音声アシスタントの作成を開始できます。全体として、日常のタスクを支援するパーソナル アシスタントの作成から音声制御の自動化システムの構築まで、可能性は無限です。この記事の例のすべてのコードについては、リンクされた GitHub リポジトリを参照してください。

翻訳者紹介

Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。

原題: GPT と Whisper を使用したパーソナライズされた音声アシスタントの作成、著者: Donato Riccio

<<:  イタリア首相がマスク氏と会談、AIや出生率などを議論

>>:  AIは自動車でも加速しており、メルセデス・ベンツは車載音声アシスタントをChatGPTチャットボットに接続すると発表した。

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

WuDao 2.Oがリリースされ、中国語を中核とする大規模な事前学習済みモデルプラットフォームエコシステムを構築

【51CTO.comオリジナル記事】​​​ GPT-3は昨年5月にリリースされました。 OpenAI...

データ構造とアルゴリズムソート - 理解できないなら、私に相談してください

[[194165]]以下では、主にデータ構造の教科書で紹介されている「10 種類のソートアルゴリズム...

eMule プロトコル スライス選択アルゴリズムの分析

ダウンロードはデータの送信であることはご存じのとおりです。この点に関しては、すでに合意内容について多...

人工知能は優れたサイバーセキュリティツールだが、諸刃の剣でもある

[[245793]]セキュリティにおける AI の役割は、ホワイトハットハッカーとサイバー犯罪者の両...

...

...

エンドゲームゲームを使用して人工ニューラルネットワークアルゴリズムを理解する

[[431963]]この記事はWeChatの公開アカウント「Zhibin's Python ...

小売業における人工知能:生き残りは賢くなることにかかっている

機械学習は、ビジネスを急速に成長させたい小売業者にとって急速に必要不可欠なものになりつつありますが、...

蘇州の路上には自動運転バスが走っている。これは試験運行ではない。市民は無料で乗車できる。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Natureサブジャーナル:ニューロモルフィックコンピューティングがさらに進歩し、科学者はニューロンとシナプスの人工シミュレーションを実現した

ニューロモルフィック コンピューティングは、人間の脳を構成するニューロンとシナプスのメカニズムを模倣...

マイクロソフトは2022年にリモートワーカー向けに3Dワークスペースを提供する予定

Microsoft は、仮想会議用に Mesh for Teams と呼ばれる没入型 3D プラット...

顔認識はどのようにして顔を認識するのでしょうか?

顔をスキャンして出勤記録を取ったり、顔で支払いをしたり、顔でドアを開けたり、顔をスキャンしながら生活...

...

PyTorch ガイド: ディープラーニング モデルのトレーニングを高速化する 17 のヒント!

PyTorch でディープラーニング モデルをトレーニングする場合、モデルのトレーニングを高速化す...

商用顔認識は一時停止できるのか?

顔認証を防ぐために、市民は営業所を訪れる際にヘルメットをかぶっている。「初の顔認証事件」で、裁判所は...