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チャットボットに接続すると発表した。

ブログ    
ブログ    
ブログ    

推薦する

第14次5カ年計画を見据えて、我が国のロボット産業はどこに向かっているのでしょうか?

ロボットは製造業の「至宝」とみなされています。近年、人口ボーナスの継続的な減少と自動化生産の需要の継...

企業はデータセンターで人工知能を広く利用する準備ができているでしょうか?

今日、ますます多くのサーバーベンダーが、人工知能を活用したサーバー自動化テクノロジーの開発に取り組ん...

ついに誰かがナレッジグラフをわかりやすく説明してくれた

[[382731]]この記事は、劉宇、趙紅宇らが執筆したWeChatパブリックアカウント「ビッグデー...

...

...

マシンビジョンは人工知能の次のフロンティアとなる

人工知能は過去1年間で大きな進歩を遂げ、人々にますます多くの利益をもたらしました。将来的には、マシン...

...

ソートアルゴリズムのより詳細な概要

ソートアルゴリズム平均時間計算量バブルソート (n2) 選択ソート (n2) 挿入ソート (n2) ...

スタンフォードNLPコースXCS224Uのビデオが公開されました。実用的な情報が満載です。ぜひ聞いてください。

会話エージェントから検索クエリまで、自然言語理解 (NLP) は今日の最もエキサイティングなテクノロ...

企業はアルゴリズムやデータを通じて、どのようにより深い堀を築くのでしょうか?

[51CTO.com からのオリジナル記事] データは今最もホットなものです。当時は「紙は洛陽と同...

清華大学の卒業生は大きな貢献をしました! Google、14のタスクで初の大規模一般医療モデルSOTAをリリース

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

このマウスはFPSゲームのプレイ方法を自ら学習し、トレーニングの精度はプロのプレイヤーと同等です。

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

人工知能が火星の新しいクレーターの発見に貢献

人工知能ツールによって特定された、火星の最新のクレーター群の高解像度画像。画像出典: Space.c...

人材獲得競争で大学に残ることを選んだAI研究者

[[265622]]ビッグデータダイジェスト制作著者: リン・アナン、周素雲AI 人材の需要が高まる...

手書きを模倣するAIが独自のフォントを作成

手書き模倣AIの研究背景諺にあるように、人の筆跡はその人の性格を表す。硬い印刷フォントと比較すると、...