NugetパッケージのSystem.Speech がv7.0でインスタンス作成時にFailを出すようになった件。(.NET6.0にしたら治った) 2022.12.19 Nuget package System.Speech v7.0 initialization fail on .NET5.0 無意識にNugetのパッケージをアップデートし、コンパイルが通らなくなった。常日頃から使っているSpeechを使った仕事用のアプリで使っている、Speechがv7.0からinstanceのnewで落ちる。 .NET 6.0では、System.Speech v7.0は使えている。 .NET 6.0というのがあるのでアップデートした。それで Speech v7.0は無事コンパイルできた。一瞬マイクロソフトのSpeechSynthesisの2024年を意識してのサポート切れかと思ったがまだ使えるらしい。 .NET 5.0と6.0の違いは不明。。。他のコンポーネントの様子を見ることにする。 しかし、UWPではだめのようだ。。。
Twitch 用 Botを作ってみる 2022.08.29 Twitchのストリーマーがゲーム配信をしていて定期的なメッセージや、翻訳メッセージが表示されているのでどうなっているのか調べてみた。 チャットは、IRCがベース。 TwitchでBot用アカウントを作って、oauthパスワードを発行。 Readを一つのスレッドでループして、新規メッセージを読む send, joinで接続。 参考資料 Writing a Twitch Bot From Scratch in C# (.NET Core) | by Bradley Saunders | The Startup | Medium
Speech API (SAPI)からCeVIO AI Voiceで読み上げ C++ 実装編 (COM SDKからのSpeakで失敗する) 2022.08.14 タイトルの通りWin32 COM C++では、SAPIの音声リストからCeVIOのボイスの選択はS_OKで成功するが、Speakで “REGDB_E_CLASSNOTREG Class not registerd” エラーが出る。 Win32 COMではCeVIO AIのボイスを選択し、SAPIのSpeakでREGDB_E_CLASSNOTREG Class not registerd エラーが出る OSにバンドルされているSAPIのボイスのSelect, Speakではエラーにはならない(正しい動作)ので、エラー処理でCeVIOを除外するしかない。(SpeakがFailした場合、最後にS_OKだったボイスをセット)今のところ、”CeVIO”がボイス名に含まれているか、Initializeの時の第一声テスト時にFailするボイスを自動選択しないようにするコードを追加。 このコードは、デスクトップ上に時刻を表示するアプリで、Win32 C++ COMでUIがD2Dベース。かれこれ5年くらいコードは触っていなかった。最近、CeVIOをインストールしたときから、Speechできなくなっていた。D2DはWindows Animationで画像表示やエフェクト、移動等ができビジュアル面では高機能。コードはWin32 C++ なのでメモリアドレス、メモリのコピペ等の操作のコード直書きなのでパフォーマンスがいいけれど、CeVIOがこれでは対応できない。 多分、CeVIOのC++コードをDLLインポートすると、2つのアプリではAPIは呼べないはずだし。 とりあえず今回は、CeVIO AIのボイスを除外する方向で修正済み。 TimeSignalアプリの時間表示。TimeSignal.exeにSpeechする言葉をオプションで起動することで、バックグラウンドで走る。画像は右クリックでExitメニューが表示されているところ
IEサポート終了なので。 2022.06.20 MSのInternet Explorerのサポートは、2022/06/15で終了。スクレイピングできないサイトのオートパイロットはSHDocVw.dll内のAPIで使用していますが、どうやらDLLはなくならないっぽい。けれど確認は各自してくださいとの事らしい。 Internet explorer end of life: impacts on programs using SHDocVw.DLL – Microsoft Q&A なので、C#で使えそうなAPIを模索中。WebAPIを公開していてもIPでブロックされて使えないサイト(某Yフ―ショッピング)もあるので結局、オートパイロットでUI上からダウンロードリンクのクリックを再現している。ダウンロードダイアログのダウンロードボタンは、別プログラムでクリックしている。 SHDocVw.InternetExplorer objIE = new SHDocVw.InternetExplorer(); objIE.Navigate("https://xxxx.com/URLPath"); objIE.Visible = true; objIE.Silent = true; objIE.FileDownload += new DWebBrowserEvents2_FileDownloadEventHandler(IE2_FileDownload); foreach (HTMLButtonElement b in objIE.Document.getElementsByTagName("button")) { if (b.name == "btnSubmit") { //Console.WriteLine(b.type); //Console.WriteLine(b.name); b.click(); break; } } 代用できるAPIがみつかればIEはすぐに捨てていくことにする。できればブラウザのUIを表示しないでスクレイピングのみでやりたいけれど、WebAPIを公開しているのにもかかわらず登録IPのみ処理可能っていうのは、やめてほしい。登録してもPHPを走らせていているサーバはレンタルサーバーのせいか結局はじかれる。よくわからないがサポートと話すくらいならできる方法でやるしかない。 愚痴ってもしょうがない。
Visual Studio 2022にアップグレード 2022.04.20 今月に入って、VS2019を立ち上げると、VS2019はサポート外ですとのメッセージが表示されたので、そのままVS2022のリンクをたどってインストールしました。(表示、インストールがあまりにもスムーズに済んだのでスクリーンショットを撮るの忘れました) 既存のソースコードを、早速アップグレードしコンパイルができることを確認。 最近増えつつある、NuGetのDependencyやライブラリのリンクもうまくいっている。いつものことだけど、一度開発環境をアップグレードすると前のバージョンに戻れなくなるのも慣れてきました。 一応、GITでアップグレード前にバックアップはしてるけど。 開発風景は、TwitchでBGM配信しながら画面共有しているので、よろしければ覗いてみてください。 リンクはこちら nGameMusic – Twitch Visual Studio 2022