質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

0回答

647閲覧

C#でASP.NETからA.I.VOICEのAPIのCOMコンポーネントに接続したい

kaz1232

総合スコア0

COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2023/02/28 09:59

編集2023/02/28 10:36

実現したいこと

C#でASP.NETからA.I.VOICEのAPIのCOMコンポーネントに接続したい

前提

C#でA.I.VOICEのAPIを使用してwebapi化しようとしています
ホストプログラムとの接続をする際にエラーが発生しました

発生している問題・エラーメッセージ

System.IO.FileNotFoundException: 'Could not load file or assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 指定されたファイルが見つかりません。'

該当のソースコード

C#

1//Controllers\hoge.cs 2using Microsoft.AspNetCore.Mvc; 3using AI.Talk.Editor.Api; 4 5namespace test.Controllers 6{ 7 8 public class Rqdata 9 { 10 public int Pitch { get; set; } 11 12 public string? Text { get; set; } 13 } 14 15 16 [ApiController] 17 [Route("[controller]")] 18 public class KuronekoController : ControllerBase 19 { 20 private TtsControl? _ttsControl; 21 private string Startup() 22 { 23 _ttsControl = new TtsControl(); 24 _ttsControl.Initialize("A.I.VOICE Editor"); 25 if (_ttsControl.Status == HostStatus.NotRunning) 26 { 27 // ホストプログラムを起動する 28 _ttsControl.StartHost(); 29 } 30 _ttsControl.Connect();//ここでエラー 31 return "test"; 32 33 } 34 [HttpGet] 35 public Rqdata Get(int Pitch) 36 { 37 Rqdata pd = new() 38 { 39 Pitch = Pitch, 40 Text = this.Startup() 41 }; 42 return pd; 43 } 44 } 45}

試したこと

System.ServiceModel.PrimitivesとSystem.ServiceModel.HttpをNugetでいれた
stackoverflowより

補足情報

このプロジェクトのgithubはこちらです
github
使用APIはこちらです※無料の栗田まろんを使用しています
aivoce 本体フリーのもの
aivoice api docs
visualstudioでASP.NET Core Web APIのテンプレートを使用しました
ホストプログラムは起動します
OSはwindows11を使用しています。
WPFでは動きました
C#を2日前に始めたばかりなので丁寧に教えてくれると幸いです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/02/28 10:51

ASP.NET は Web アプリケーションであること、クライアント側は基本ブラウザであることは理解されてますか? サーバー側で起こることとクライアント側で起こることの違いを認識してますか?
kaz1232

2023/02/28 12:08

回答ありがとうございます つまり上記のコードではクライアント側で接続しようとして失敗してるってことですか? もうそうだったとしたらどうやったらサーバー側で処理できるのかを教えていただけると幸いです。
退会済みユーザー

退会済みユーザー

2023/02/28 12:25

サーバー側のコードはクライアントから遠く離れた Web サーバーで動いています。その Web サーバーで A.I.VOICE とやらを動かして(動かないと思いますがそこはちょっと置いといて)何か意味があるか考えてみましょう。
kaz1232

2023/02/28 12:30

A.I.VOICEをサーバー側で動かしてwavを生成(base64などにする?)してそれをクライアントにレスポンスとして返したいです (JSやPyでA.I.VOICEを使用したいので)
退会済みユーザー

退会済みユーザー

2023/03/01 01:23

クライアント(ブラウザ) ⇔ ASP.NET Web API ⇔ A.I.VOICE Editor API ・・・という構成を考えているのですか?
kaz1232

2023/03/01 05:25

httpクライアント(axiosなど)<=> ASP.NET Web API<=> A.I.VOICE Editor API という構成を考えています。
退会済みユーザー

退会済みユーザー

2023/03/01 06:17 編集

「WPFでは動きました」といっているのは WPF ⇔ A.I.VOICE Editor API という構成でのことだと思いますが、全てがクライアント PC のメモリに存在して PC にログインしたユーザーの権限で動く WPF と、Web サーバーで動く ASP.NET Web API とでは条件が大幅に異なることは理解されているでしょうか? 大きく違うのは、(1) ワーカープロセスのアクセス権の違い、(2) プロセスがユーザー対話モードで動いているか否かです。(加えて、Session 0 分離による制約もあります) WPF の場合、(1) は PC にログインしたユーザーアカウントの権限、(2) はユーザー対話モードになっているはずです。 ASP.NET Web API の場合、(1) はデフォルトでは Network Service または AppPoolIdentity という権限が低いアカウント、(2) は非ユーザー対話モードです。また、音声の再生とかを Web サーバーでやってもクライアントは聞こえないので意味がないです。 上の条件の違いを考えた上で、httpクライアント(axiosなど) ⇔ ASP.NET Web API ⇔ A.I.VOICE Editor API という構成で質問者さんの望むことが可能なのかを検討されることをお勧めします。 A.I.VOICE Editor API は触ったこともない自分には上記以上のことは言えず、お役に立てずすみません。他の方の回答をお待ちください。
退会済みユーザー

退会済みユーザー

2023/03/01 08:50

もう一つ大事なことを書くのを忘れていましたので追記しておきます。 ASP.NET は要求を受けるとスレッドプールからスレッドを取得して要求を処理して応答を返します。応答を返した後スレッドプールに使ったスレッドを戻しますが、短時間に多数の要求を受けるとスレッドプールのスレッドが枯渇して要求を処理しきれなくなります。その対応に非同期操作が必要ですが A.I.VOICE Editor API はそれに対応してないようです。 それから、ASP.NET Web API ⇔ A.I.VOICE Editor API 間の接続も問題だと思われます。クライアントから要求を受ける都度 ASP.NET Web API ⇔ A.I.VOICE Editor API 間の接続を確立するのでしょうが、接続が不要になったら接続をきちんとクローズして socket の浪費などの問題は起こらないようになっているか疑問です。全く考えられてないかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問