音声AIアプリをDelphiで作成したい


アミ  2024-06-03 21:23:47  No: 151490

最近、アイフォンの音声AIアプリ「Cotomo」にはまっています。
こんなアプリをDelphiで作成は可能なのでしょうか。
それとも別の言語でなければできないものですか。


mam  2024-06-07 10:47:49  No: 151510

AIアプリ「Cotomo」を使ったことがないのでご了承ください。CotomoはchatGPTを使用しているそうです。
ですので、chatGPTの有償版(無償版ではむりでは?)のライセンスを取得して、DelphiからRest通信してchatGPTのAPIを呼び出せば可能なのではないでしょうか。
外していたらすいません。


mam  URL  2024-06-07 14:37:49  No: 151514

Delphiで構築したAIアプリの紹介がエンバカデロ社様のページにありました。

https://www.embarcadero.com/jp/delphi-stories#ai


mam  2024-06-07 15:11:09  No: 151515

ChatGPTを調べました。

DelphiからRestクライアント(TRectClient)で以下のようなヘッダーとJsonを送ると、
ヘッダー:
    "Content-Type": "application/json",
    "Authorization": f"Bearer YOUR_API_KEY"
JSON:
{
    "model": "gpt-4",
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "ChatGPTのAPIはどのようなデータをどの様に送信すると、どのようなデータが届くのでしょうか。"}
    ],
    "temperature": 0.7,
    "max_tokens": 150,
    "top_p": 0.9,
    "frequency_penalty": 0,
    "presence_penalty": 0.6
}

temperature: 0.7 に設定することで、レスポンスの創造性が適度になります。
max_tokens: 150 に設定することで、レスポンスの長さを制限します。
top_p: 0.9 に設定することで、レスポンスの多様性を確保しつつも、確実性を保ちます。
frequency_penalty: 0 に設定することで、繰り返しを抑制しません。
presence_penalty: 0.6 に設定することで、新しいトピックを導入しやすくします。

以下のようなレスポンスが返ってくるそうです。
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "ChatGPTのAPIを使用すると、クライアントはプロンプトを送信し、APIはそれに基づいて生成されたレスポンスを返します。リクエストはJSON形式で送信され、レスポンスもJSON形式で返されます。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 57,
    "completion_tokens": 23,
    "total_tokens": 80
  }
}

料金体系(2024年時点)
GPT-4-8k(8kトークンのコンテキストウィンドウ):
  入力トークン: $0.03 per 1k tokens
  出力トークン: $0.06 per 1k tokens
GPT-4-32k(32kトークンのコンテキストウィンドウ):
  入力トークン: $0.06 per 1k tokens
  出力トークン: $0.12 per 1k tokens
GPT-3.5-turbo:
  入力トークン: $0.0015 per 1k tokens
  出力トークン: $0.002 per 1k tokens

トークンとは
  トークンは、モデルがテキストを処理するための基本単位です。
   例えば、英単語1つは約4~5トークン、漢字1文字は1トークン程度に相当します。

だそうです。


mam  2024-06-09 15:31:43  No: 151516

音声認識についてですが、Windowsには標準で音声認識があるのですがAPIから「sapi」を使う場合は任意の音声認識ができないようです。
(「sapi」は登録した音声を発したかどうかの確認だけが可能なようです。たとえば「リンゴ」「バナナ」を登録してこのどちらかをマイクに向かって発したかどうか)
私が知っている無料でWindowsで音声認識する方法は、Edge(Chrome)に搭載されている音声認識を使うことです。
DelphiでTEdgeBrowser(https://mam-mam.net/delphi/tedgebrowser.html)を使う、または
WebView4Delphi(https://mam-mam.net/delphi/tedgebrowser_webview4delphi.html)を使って
Javascriptで音声認識(https://mam-mam.net/javascript/js_speech_recognition.html)を行うことができます

Androidで音声認識するには
https://mam-mam.net/delphi/android_recognize_speech.html
を参照してください
iOSに関しては私にはわからないです。

音声認識して取り出した文字列をChatGPTにTRestClientで送ってレスポンス文字列を発声したい場合は
Windowsの場合は https://mam-mam.net/delphi/vcl_speech.html の方法で発声させることができます
Androidの場合は https://mam-mam.net/delphi/android_speech.html の方法で発声させることができます
iOSの場合は申し訳ございませんが知らないです。


mam  2024-06-10 16:16:47  No: 151517

すいません、上記URLがおかしくなっていますね。同じ文章ですが、改行をいれてみました。

音声認識についてですが、Windowsには標準で音声認識があるのですがAPIから「sapi」を使う場合は任意の音声認識ができないようです。
(「sapi」は登録した音声を発したかどうかの確認だけが可能なようです。たとえば「リンゴ」「バナナ」を登録してこのどちらかをマイクに向かって発したかどうか)
私が知っている無料でWindowsで音声認識する方法は、Edge(Chrome)に搭載されている音声認識を使うことです。
DelphiでTEdgeBrowser
https://mam-mam.net/delphi/tedgebrowser.html
を使う、または
WebView4Delphi
https://mam-mam.net/delphi/tedgebrowser_webview4delphi.html
を使って
Javascriptで音声認識
https://mam-mam.net/javascript/js_speech_recognition.html
を行うことができます。

Androidで音声認識するには
https://mam-mam.net/delphi/android_recognize_speech.html
を参照してください
iOSに関しては私にはわからないです。

音声認識して取り出した文字列をChatGPTにTRestClientで送ってレスポンス文字列を発声したい場合は
Windowsの場合は
https://mam-mam.net/delphi/vcl_speech.html
の方法で発声させることができます。
Androidの場合は
https://mam-mam.net/delphi/android_speech.html
の方法で発声させることができます。
iOSの場合は申し訳ございませんが知らないです。


mam  URL  2024-06-10 21:20:51  No: 151518

Delphi11.3(Community Edition)でWindowsでTEdgeBrowserを使って音声認識する方法を記事にまとめました。
https://mam-mam.net/delphi/tedgebrowser_speech_recognition.html
音声認識精度はそこそこ高めだと思います。

ブラウザ(EdgeやChrome)は凄く進化していて、音声認識や、動画や音声のエンコードやデコード機能を装備していますし、カメラやマイクも使えますし、位置情報も取得できますし、傾きセンサーなども使用できますし、WebGL(ブラウザ内で3D表示)もできます。しかもJavascriptでの記述はネイティブ言語に比べて格段にソースコードが短くなりますし、InternetExplorerの時とは比べものにならないくらいJavascriptの処理速度が速いです。(当然Delphiのほうが10倍程度速いのですが。)EdgeがChromiumベースになって、DelphiでTEdgeBrowserがWebViewで使えるようになったメリットはかなり大きくて、Delphiで処理が面倒だったり無理だったりする場合はEdgeと連携してJavascriptで処理ができます。スマホでは以前からWebViewが当たり前なのかもですが。

取り急ぎご参考まで。


mam  URL  2024-06-12 20:52:17  No: 151520

このスレッドとは関係ないのかもですが、

Delphi11.3(Community Edition)でWindowsでTEdgeBrowserを使って位置情報を取得する
https://mam-mam.net/delphi/tedgebrowser_gps.html
この方法を使うと、パソコンにGPSモジュールが搭載されていなくても、インターネットに接続していればおおよその緯度経度が取得できます。

Delphi11.3(Community Edition)でWindowsでTEdgeBrowserを使ってWebカメラの映像を取得する
https://mam-mam.net/delphi/tedgebrowser_webcam.html

をご紹介します。


mam  URL  2024-06-20 20:08:00  No: 151523

さらに余談で申し訳ございません。
ブラウザ「Eege」はPDFファイルを表示できるので、DelphiでTEdgeBrowserを使えばPDFファイルを表示できます。
https://mam-mam.net/delphi/tedgebrowser_pdf.html


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加