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

ブログ    
ブログ    
ブログ    

推薦する

...

なぜディープラーニングには局所最小値がないのでしょうか?

この記事では主に定量的な質問に答えます。定量的な問題には主に次のような状況が含まれます。 「私の知る...

ディープラーニング:新興技術の限界を押し広げる

ビッグデータや人工知能などの新興技術は猛烈な勢いで発展しており、その一因はディープラーニングの驚異的...

電源なしで形を変えるソフトロボット「ロールボット」

海外メディアの報道によると、ハーバード大学ジョン・A・ポールソン工学・応用科学大学院(SEAS)とカ...

...

人工知能やブロックチェーンはビッグデータの範疇に入るのでしょうか?

まず、全体的な技術システム構造の観点から見ると、ビッグデータは人工知能やブロックチェーン技術と密接に...

インテリジェント チャットボットを自分で開発するための完全ガイド (完全なソース コード付き)

1. はじめに人工知能の時代において、独自のインテリジェントな質問応答ロボットを開発することは、一...

台北の5G自動運転バスが試乗開始

「台北市信義路バスレーン自動運転バスイノベーション実験プロジェクト」は台北市で長らくテストされており...

...

AIの次の目的地:洗練された生活シナリオのインテリジェント時代

[[348783]] Canvaからの画像テクノロジーは生活の中でどのような役割を果たしているのでし...

超人工知能を制御できるアルゴリズムはあるのでしょうか?

スーパー人工知能の出現は、多くの作業を非常に効率的に完了できることを意味するため、私たちはその出現を...

AIとディープラーニングはもはやハイエンドのビデオ監視アプリケーションに限定されたものではない

[[408248]]最近、ディープラーニング AI を活用したビデオ監視プロジェクトに携わったことが...

OpenAIの取締役会が数秒で後悔!ウルトラマン、CEOに復帰要請

たった1日で、OpenAIの取締役会は劇的に変化しました。最新のニュースによると、ウルトラマンがCE...

...

...