最近、アイフォンの音声AIアプリ「Cotomo」にはまっています。
こんなアプリをDelphiで作成は可能なのでしょうか。
それとも別の言語でなければできないものですか。
AIアプリ「Cotomo」を使ったことがないのでご了承ください。CotomoはchatGPTを使用しているそうです。
ですので、chatGPTの有償版(無償版ではむりでは?)のライセンスを取得して、DelphiからRest通信してchatGPTのAPIを呼び出せば可能なのではないでしょうか。
外していたらすいません。
Delphiで構築したAIアプリの紹介がエンバカデロ社様のページにありました。
https://www.embarcadero.com/jp/delphi-stories#ai
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トークン程度に相当します。
だそうです。
音声認識についてですが、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の場合は申し訳ございませんが知らないです。
すいません、上記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の場合は申し訳ございませんが知らないです。
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が当たり前なのかもですが。
取り急ぎご参考まで。
このスレッドとは関係ないのかもですが、
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
をご紹介します。
さらに余談で申し訳ございません。
ブラウザ「Eege」はPDFファイルを表示できるので、DelphiでTEdgeBrowserを使えばPDFファイルを表示できます。
https://mam-mam.net/delphi/tedgebrowser_pdf.html
ツイート | ![]() |