くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2024-11-06

日記

三連休は休んだ気がする。

なんもせずに休もうと決めていたので土曜日はなんもせずにごろごろしていた。 日曜はさすがになんかしたいなあと思ってプラモパチ組み。 月曜は土日にやらなきゃいけなかったこと全てを終わらせるために動いた。 とはいえ実際考えたらちょっとした家事と賃貸更新の書類書きくらいだったが。

仕事がちょっと落ち着いた時期に入ってるので趣味のプログラムが書ける気持ちになっている。働いてる時間的にはそこまで大きくは変わってないっぽいが……?

[模型] HG YF-29 デュランダル(マックス機) フルパックセット

積んであったHG YF-29 デュランダル(マックス機) フルパックセットをさくっと組もうかと。

結構ボリュームあるけど言うてHGだしな~と組み始めたが結局6時間くらいかかったか。まあボリューム的には適正くらいかも。 いつも作ってるのはV.F.G.なのでファイター形態から組むが、HGはバトロイド形態から組むのがちょっと新鮮だ。 正確にはV.F.G.は女の子から組むんだが。

組んでる間はV.F.G.より一回り小さいかな?とか言ってたんだが、ファイター形態にしたらべつに小さくは感じないしあとで比べたらほぼ同じだった。気持ち小さいかも?くらい。 たぶんバトロイド形態は女の子ない分あきらかに小さいのでその辺りの印象だろう。 特に脚がV.F.G.だと女の子の脚が入る関係上エンジン部分が外に出るようになるので、そこが大きく見えるんだな。

別売の水転写デカールも買ってあったので土曜はひとまずシールは貼らずパチ組みだけしたが、日曜にはスミ入れとデカールで代替できない部分のシール貼りもした。

HG YF-29 デュランダル(マックス機)ファイター形態 スミ入れ+シール スーパーパック無し

写真はスーパーパック外した状態で。シールで満足できるかなあと心配はあったが、薄いのもあって意外と気にならない。V.F.G.のシールもこれだけ薄ければ……。 ただガウォーク・ファイター形態での頭とか、尾翼だとか立体的な形状に貼るシールはさすがに厳しいものがある。尾翼はまあまだなんとかなるけど頭はちょっと無理あるな。 あと水転写デカールみたいに置いてから位置合わせとかできないので貼るの難しいよ~。

ただまあ色塗る気までは起きないのでシールで済ませておきますけどね。あと結構な数貼りはしたけどまだまだあちこち色が足りなくて気になるところがちらほら。 気にはなるけど塗装しないと決めた以上は見なかったことにしよう。積みが多くて時間かけてらんねえんだ。もしかしたらごく一部筆塗りするかもだけど。

スミ入れはさくっとリアルタッチマーカーでやったけどやっぱこれ便利だな。スミ入れ筆ペンを買ったので使おうとしてみたがニュートラルグレーを試しに入れてみたら思ったより明るくてこれじゃねえなになってめんどくさくて諦めた。一度色を決めてしまえば楽なのかもしんないけど何本も用意しとくのめんどくせえなやっぱ!

ガンダムマーカーの流し込みスミ入れペンもどうかなーと気になったが、他の塗料の上から使えませんとなっていて躊躇われる。 アクリジョンの上からなら大丈夫じゃない?という気もするがどうなんですかね。一本買って試してみるか~。

まああと普通にタミヤのスミ入れ塗料買えばいいじゃないというのもあるが、あれ四角い瓶だから色沢山欲しいとなると嵩張るんだよねえ。 もうクレオスのウェザリングカラー結構持ってるし。ウェザリングカラーは流し込みはできねえし。


2024-11-13

日記

寒くなったせいか早速風邪引いた。

木曜日に喉痛くなったなと思ったら夜にはふとんにもぐって暖房つけてても寒気がひどくて一睡もできない状況に。 金曜日はさすがに休みにして土日もほぼ寝転んでいた。寒気はすぐ落ち着いたが喉の痛みがなかなか治らず。

月曜は喉の痛みも落ち着いてきたしまあまあ大丈夫そうになったので出社したが、夕方あたりから結構元気になったのと引き換えに今度は鼻水と痰が絡んで咳が出るようになっちゃった。 今日休みにしたんだが(プラモの予約戦争があるため)、おとなしくしててもなかなかよくなりませんね。

しかし風邪引いて寝てたかと思いきや意外と作業が進んでる不思議。さすがにプラモ作りはしてないがプログラムが進む。 あったかくして座ってるだけだから少しくらい体調悪くてもいけるんだよね。仕事は無駄に出社させられるからきついんだが。

なおプラモ戦争は30MMと30MFがすんなり予約完了。30MSはオプションの一部だけ予約できたが、フロートユニットとエイダーコスチュームと素体2体は予約できず。キャンセル待ちと抽選に賭けよう。素体はまあいいんだけどオプションは買えないやつはほんと買いづらいから予約できてほしいんだけどな~。 コスチュームはエイダーだけなんで買えねんだ思ったけど、そっかドスケベピンクナース服だから人気なのか……。

[PeerCastStation] .NET8とか諸々バージョンアップ

PeerCastStationは大幅な整理が時間かかりそうなので、それを終わらせる前に.NET8に移行しようかと。 .NET6もサポート切れちゃうしね。

.NET8への移行自体は特になんも難しいところなく6.0を8.0に置き換えるだけ。まあそんな変なことやってませんし。 ただついでにいろいろ古いのを更新してしまいたい。

インストーラーがWiX3なのを4に移行してビルドしやすくしたい……と調べたらもう5が出てた。4はいつまでも出なかったのに5は早いな。まあ3→4程大きな変更はなさそうだ。 移行は大変そうに思えたがVisualStudioの拡張入れて変換をポチっとしたらそれで済んでしまった。なんか結構めんどくさいことやってたような気がしたんだが?と中身みてみたら、いつだかに整理してそんなめんどくさいことはない形式になってたようだ。それはよかった。 最終的には再確認したいが。

jQueryが古いとかなんとかめちゃくちゃ文句言われてるのもなんとかしたい。nugetパッケージで入れてるのを軒並み更新してみるが、そういやこいつらってどこにどう入ってくるんだっけ? パッケージの中身を見るとなんかContentとかScriptsてフォルダに物が入ってるっぽいけど、なんかそれっぽいの元からリポジトリにコピって追加してあるんだよな。何をどうしたんだ昔の俺は。 あとbootstrapも最新のパッケージを入れたらSolution Explorer上ではwwwrootってのが見えてその中にぶちこまれてるようになったんだが、ビルドしてもコピーされるわけでもなく、こいつらをどう扱えばいいのかさっぱりわからん。なんだこれ……?

いろいろ調べたんだが、ビルド時に勝手にコピーされるようにするにはnuspec内でこのファイルはコピーすると指定しないといけないようだ。 だがnuspecはパッケージ作る側が書くもので、使おうとしているbootstrapではコピーされる指定はない。使う側では手遅れ。むむむ。

試しにSolution Explorer上で見えるwwwroot内のファイルをプロパティページからコピーするように指定してみたら、csprojの方にはそのファイルのローカルキャッシュへのパスが書かれちゃった。確かにそこにファイルあるのかもしれないが、そんなところ参照されても困るぞ……。

なんとかならんかドキュメント見てたらPackageReferenceGeneratePathPropertyてのがあって、これを使うとパッケージのローカルキャッシュへのパスが取得できるようになるらしい。うわ、以前見た覚えがあるけど何に使うんだろう?と思ってたけどこれじゃん!! 実際にどんな展開されるかはobj/~.csproj.g.nuget.propsを見てねということなので見てみると、確かにローカルキャッシュのトップレベルへのパスが入っている。 あとnuspecのcontentFiles指定から生成された各ファイル項目もここに展開されていて、wwwroot内のパスを指定したLinkも書かれていた。 なるほどSolution Explorerから見える謎はここにあったのか。

謎が解けたらあとはやることは簡単っすね。ということでちょちょっと書いて解決した。

<ItemGroup>
  <PackageReference Include="bootstrap" Version="5.3.3" GeneratePathProperty="true"/>
  <PackageReference Include="jQuery" Version="3.7.1" GeneratePathProperty="true"/>
  <PackageReference Include="knockoutjs" Version="3.5.1" GeneratePathProperty="true"/>
  <Content Update="$(Pkgbootstrap)/contentFiles/any/any/wwwroot/**/*.*">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <Content Include="$(PkgjQuery)/Content/Scripts/jquery-*.min.js">
    <Link>wwwroot/js/%(Filename)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <Content Include="$(Pkgknockoutjs)/Content/Scripts/knockout*.js">
    <Link>wwwroot/js/%(Filename)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

GeneratePathPropertytrueにするとPkgパッケージ名というプロパティが生えてきてインストール先の絶対パスが入っている。 bootstrapはnuspecにcontentFiles指定があるためobj/~.csproj.g.nuget.propsContentが生成されているのでコピー指定だけ書き換える時はUpdate属性を使う。 jQueryknockoutjscontentFiles指定がないのでobj/~.csproj.g.nuget.propsには何も書かれていない。そのためContentにはInclude属性を使う。あとbootstrapと同じくwwwroot内に入れちゃお、と思ってLinkメタデータを作っておいた。

これでビルド時に必要なファイルがコピーされるようになってくれたわ。

パッケージの更新はできたが、bootstrapは2だか3だかから5に上げたので当然マークアップもめちゃくちゃ変わってて表示がボロボロ。これ直すのがまた大変そうだ。

まああと表示がちゃんとなればひとまずバージョンアップは完了かな。ヘルプのビルドにJekyll使ってるのもnugetで導入できるなんかにしたいけども、キリがないのでそれはまた今度にしよう。

[プログラム] オフラインで音声認識

配信時にAzure Speech Serviceで音声認識して字幕生成的なことをやってるんだが、Azure Speech Serviceは結構お金かかってしまって困る1。 月3000円以上かかっちゃってるのでなんとかしたい。

オフラインで音声認識するのにWindowsの機能が使えればいいんだが昔の物は精度がアレだし比較的最近のだとアプリがフォアグラウンドじゃないと動作してくれない。 Windows 11だとライブキャプションという機能が最近あるのでこれが使えればいいんだが、今のところ外から触れるAPIとしては用意されていない。 ただ中身はAzure Speech Serviceのオフライン認識用モデルを使ってるようでそれを触るにはアクセスキーが必要なんだが、なんとライブキャプションの実装あたりのDLLを覗いてみたらキーが普通にぶっこ抜けちゃって試してみたら動いちゃった。 ただまあ一人で試すならこれでいいけども、他人にこれ使いなとは言えないよな……。 あとSpeech Serviceのオフライン認識用のモデルの認証方法は最新版では変更されてたので使えなくなると思われます。簡単にぶっこ抜けるキーではさすがにね。

なんかオフラインで使えてelectronから呼べるのがあったらいいよねということで調べる。 ただAIでとかなるとだいたいPython前提でアプリに組み込むのがなかなか難しくて見つからないねえ……。

一つ見つけたのはVoskてので、これが簡単に導入できそうなのでいろいろいじってた。 Voksはnodejs用のパッケージもあるんだが、ただunacastはelectronなうえにバージョンも古いのでなかなか簡単には導入できず。 途中まで試して思ったよりめんどくせえぞとなっているところで、組み込む前にまずVoskのデモを試してみたら普通に精度悪くて使えねえなこりゃとなった。 まあ50MBのモデルですもんね……。

引き続き調べてたらReazonSpeechのk2てやつがsherpa-onnxといういろんな環境から呼び出せるライブラリ向けのモデルなようだ。ReazonSpeechなら日本語特化だし期待できそうでint8のはサイズも大きくなくて使いやすそう。次これ試してみよう。

unacastにいきなりぶち込もうとすると面倒なことになるのはわかってたのでまず単体で試してみよう。 sherpa-onnxの公式にマイクから入力して音声認識するサンプルもあるのでそれにReazonSpeechのモデルを渡してみる。

sherpa-onnxはいろんなモデルが使えたりするしReazonSpeechもなんかいろんなファイルがぽろっとあってどこに何を指定すればいいのかわからなかったが、そもそもReazonSpeech公式のPythonライブラリがsherpa-onnxを使ってたのでそこを参考にファイルを指定。 あとはすんなり動くはず……って動かねえな。なんかメタデータが無いぞみたいなエラー出されるけど、調べたらそいつはオフライン用のモデルでオンライン(リアルタイム)認識には使えねえぞ、ってことらしい。使えないのかよ!

この場合、音声のしゃべってる部分を切り出してオフライン認識させるのが正道なようだ。でも音声のしゃべってる部分を切り出すのってそう簡単じゃねえぞ……。

と思ったらsherpa-onnxに普通にそのサンプルあるじゃねえか!sherpa-onnxはSilero VADてのを使ってしゃべってる部分を切り出す機能が入ってたようだ。VADって付いてるサンプルあるのは知ってたけどVADてなんだろなと思ってた。Voice Activity Detectorの略だったわ。

今度はオンライン認識じゃなくて、マイク入力でVADしてオフライン認識というサンプルを試したら比較的すんなり動いてくれた。 コードもわかりやすい。 ただいくつか問題があるなあ。

一つは長々としゃべってるとマイク入力のバッファがオーバーフローしたとかで落ちちゃう。まあこれは処理が間に合ってないだけだろう。 マイク入力の設定のところでエラー時に終了しない設定にしたら解決した。

もう一つがよくわからなくて、なんかしゃべり始めがいくらか無視されちゃうんだよね。これはVADが悪いのかなあといろいろパラメータいじってみたが改善せず、そもそもVAD結果を書き出したファイルを聞いてみたら過不足なくしゃべったところだけばっちり切り出されていた。じゃあReazonSpeechの方か~。

しばらくいじってみたが全然わからなくて、ReazonSpeechの公式ライブラリの方で渡してるパラメータを確認してみたがパラメータは同じだった。 ……が、よく見るとなんか音声の頭に0.9秒の空白をくっつける処理やってんじゃん!こんなの必要なのか!現象からしてもばっちりこれじゃんねえ。

0.9秒の空白くっつけるのはまあ簡単で16kHzでサンプリングしてるので16000*0.9個の0を頭にくっつけて渡してやるだけだ。やってみたら問題なく認識してくれるようになった。やったー!

試した感じは結構精度よくて速度もそんな遅い感じはない。 リアルタイムではないので瞬時にとはいかないし途中経過とかも出ないものの、しゃべったのをログとして出しておきたいだけなので問題ないだろう。 CPUモードで実行してるのにCPU使用率も全然上がらん。メモリは500MB以上食ってるから結構使ってるけど今のPCならまあ厳しいってこともないでしょう。

int8とfp32のモデルがあるので試してみたがint8のでも十分精度良いと感じた。 decoderだけfp32の使うとモデルのサイズはそれほどかわらず精度よくなるからバランス良いかもって感じ。 まあ一回ダウンロードするのが300MB多いか少ないかって程度なんでfp32でもいいのかもだけど。

あとはElectronで動かせるかな~とかマイク入力自分で処理するのめんどくさいな~2というのをやっていかないといけない。 それはそれで大変そうなのでまた今度ね。そのままだとどんどんお金かかるから早めにやっておきたいが。

そういやsherpa-onnxはバックエンドにONNX Runtime使っているということなのでGPUを使うこともできるだろうと調べてみた。DirectMLを指定すると使ってくれそうなので指定してみたが、バイナリがDirectMLを使わない設定でビルドされているようでCPUにフォールバックされちゃった。 まあCPU処理でも全然負荷なかったからGPU処理にする意味全然ないか。むしろVRAMいっぱい持っていかれて困る方があるかもしれない。

  1. .NET版とかならしゃべってる時だけ接続してくれるので意外と安く済むっぽいんだが、JavaScript版はその機能がないのかしゃべってなくてもお金がかかってしまう……。 

  2. Azure Speech Serviceのライブラリはマイク入力から音声認識まで勝手にやってくれた。 


2024-11-19

日記

まだ咳が出る。もう少しで治りそうってところまではやっと来たが、また寒くなってきたので気をつけないと。

土日はまだ鼻水も咳も出てたので家でおとなしくしてた。あとやけに眠いのでひたすら寝てた。日曜にさすがに何もしないのはなということで洗濯と買い物だけはしてきたが。

M3のCD取り込みがまだ出来てない。取り込んだCDはそのままケースに入れとくと大変なのでファイルに入れ直してるんだけども、ファイルを切らしていて休日は出掛けるのもおっくうな体調だし平日は店開いてる時間に帰らないしでいつまでも取り込みできず。日曜にやっと買ってきたんだけど時間が遅かったのでそのまますぐ寝た。 まあ全然急ぎの作業ではないんですけどね。

[PeerCastStation] bootstrapのバージョンアップつら

bootstrapを2から5にバージョンアップしたんだがマークアップも直さないといけないのでつらい。

めんどくさいのでこういう時こそGitHub Copilot Chatにやってもらおう!ということでこのbootstrap2用のHTMLコードをbootstrap5用に直してください、て言ったらやってくれた。すげえ! 完璧ではないもののだめなところだけ直していけばよさそうね。

と思ったのも束の間、100行ちょいくらいのファイルは問題なくやってくれたんだが、より長いファイルになったら100行ちょっとくらいで長すぎなので打ち切りましたと諦めてしまった。そんな~。 じゃあ続きを出力してくださいと言ったら、プログラミング関連の質問しか受け付けませんとつれないお返事。文脈あんま保持してくれんのか? 130行目以降を変換してくださいと言ったら上手くいく場合もあったが、やっぱり長いファイルだと全然だめだ。 何を言っても最初から同じ出力をしてくるようになったり(しかも同じところで打ち切られる)、全然関係ない捏造コードを自信満々で出してきたりと不安定すぎる。 なんとか細切れにしたコードを渡していけばできるのかもしれないがめんどくせえ! 手で変換するのめんどくさいなあと思って任せたいのに、なんでAIをなだめすかして細切れのコード片をあっちこっちコピーしまくるとかめんどくさい作業せねばならんのだ。 しかも完璧に変換してくれるわけでもないのにさ。 はいはいわかったもういいよ俺が手でやるよ。

ところでbootstrap5ではもう既に標準のアイコンが含まれなくなっており、パッケージとしては別にbootstrap iconsというのが配布されているようだ。 しかしこいつはnugetのパッケージになくてちょっと困った。bootstrap本体をパッケージにするならこれもないと困らん? なんかBlazor用とかのASP.NETから使うパッケージみたいなのは結構あるけどそういうのでなく普通にリソースだけ欲しいんだが。

ASP.NET Coreプロジェクトではクライアント用のパッケージ管理にLibManというのが使えるようになっているようだけど、これ使った方がいいのかなあ? ドキュメント見る感じビルド時にリストアしてくれる機能はべつにASP.NET Coreでなくても使えそう。試しにやってみるとそれっぽく動いてくれたぞ。 ただ設定ファイルの書き方がよくわからん。なんかJSON Schemaを見ろとは書かれているがスキーマ見てもどんな形にすればいいかはわかっても値の意味がわからないだろがい! オープンソースではあるのでコードを見ながら設定ファイルを書いてみるもののfileMappingsて書いたら設定ファイルバージョン3.0じゃないと使えないよって言われるし、設定ファイルバージョン3.0て書いたらバージョン1.0しか対応してないよって言われる……? どうもLibManの配布されてるバイナリは2022年で止まっていて、新しい機能は使えないみたい。なにこれほんとに使って今後も大丈夫なやつ?やめとくか。

LibManでも結局CDNから落としてくるならそもそもCDNへのリンクそのまま書いちゃえばいいかもう。 オフラインでも最低限表示できるようにと必要なリソースはローカルに含めるようにしていたんだが、常識的にはインターネット使えないCDNにつながらない環境でPeerCastStation動かしたいことって無いもんね。 ということで諸々一気に解決させた。 sassとかでカスタマイズしたいよ~とかなると話は変わってくるんだが、そういうことする気は今のところないしね。

あとはせっせとマークアップ直し。さすがに2から5だと機能も整理されたり追加されたり、そのまま置き換えるだけじゃなくてより良く書き直すのもできるしやっぱ手で直すのは必要だわな。JavaScriptのAPI変更もあるのでそういうところはどうしても直さないと動かん。

まだちょっとかかりそう。でも今月中にはだいたい終わるかな。


2024-11-26

日記

まだ咳が出る。もう少しで治りそうで治らん。ぐぬぬぬ。

土日もなんもできんかったなあ。いやなんかやったような気もする。CD取り込みとか。

[プログラム] オフラインで音声認識続き

nodejsでReazonSpeechで文字起こしができるのは確認できてたのでunacastに入れたい。

とりあえず一番こわいのはElectronで動くunacastでsherpa-onnx-nodeが読み込めるかだが、やってみたらすんなり読み込めたっぽい。じゃああとは組み込んでみよう。

マイクはレンダラープロセスで入力してバックエンドにPCMデータを送りたいが、マイク入力からPCMデータを取得するのが意外と大変。WebAudioてので取得するんだがScriptNodeてのを使おうとするとそれはDepricatedだからやめとけとめちゃくちゃ言われる。しかし代替手段がWorkerなので古いElectronで動くかわからんぞ。ということでまあどうせ古いしブラウザで動かすわけじゃないしScriptNode使おう。

入力はなんとかできたのでバックエンド側にそのまま渡して音声認識させる。認識させる部分は以前やったサンプルと同じ。やってみると一瞬「あ」とかなんとかは認識されるんだがそれっきりになってしまう。なんでだー?

入力のデータがおかしそうなのでじゃあサンプリング周波数が違う?getUserMediaの時に16kHzを指定してるんだが、これはヒントでしかないので結局デバイスの自然なサンプリング周波数を返してきてしまい48kHzになっている。絶対16kHzにしろやと指定もできるんだが、そんなデバイスねえよと怒られてしまう。役に立たねえな。これ別途ダウンサンプルしないといけないか。

でダウンサンプルの方法を探したんだが簡単にはなさそうだ。JavaScriptで書く方法もあるがそれなりのデータ量なのでちょっと不安。sherpa-onnx自体には周波数変換してくれる機能があるがVADにはその機能がなぜか付いてなくて、周波数変換単体の機能もあるがnodejs向けのライブラリには公開されていない。残念すぎる。

いろいろ探してたらWebAudioのOfflineAudioContextを使って変換する方法が見つかった。48kHzのPCMを受け取ってOfflineAudioContextで16kHzにレンダリングするとのこと。うーん、まあ確かにできそうだけどもオーバーヘッド大丈夫?遅くない? まあとりあえずやってみるかで試してみたが特に気になることもなく動いた。ほんとにいいんかという気もしなくはないが、今のところ問題なく動くしこれでいいか。 で、無事音声認識も行われるようになった。

あとはexe作るまでは普通にいったんだが全然起動しない。なんか拡張がパスにないぞと言われる。これのdllがどうやって入ってきたのかよくわかってないが勝手にコピってくれたりするわけじゃないのか。必要そうなdllだのをコピってきたらウィンドウは出たんだが、なぜかすぐ落ちてしまう。こっちはなんもログ出てこないのでわからんなあ。 ひとまずはexe無しでも手元で動かす分には問題ないのでしばらく使ってみよう。

で、日曜の夜に一度使ってみたんだが、音声認識はバッチリだった。今まで使ってたAzureの有料Speech to textより精度良く感じるくらい。まあAzureのはリアルタイム音声認識な一方で今回のReazonSpeechはしゃべったフレーズだけ切り出してあとから音声認識させると方式が違うので直接比較してよいものでもないんだろう。しかし配信時にしゃべったログを表示させておきたいという程度のリアルタイム性であれば十分だった。

しかしexe化以外は上手くいったんだと思ってたものの、なぜかVOICEVOXが読み込めなくなっていた。読み上げにVOICEVOX Coreを使ってるので同じプロセスにdllを読み込んでるんだが、それが読み込めないとかで読み上げができなくなっていた。 なんだろなーと思ったが、そういやVOICEVOXもONNX Runtime使ってるんだった。おそらくsherpa-onnxが使うONNX Runtimeと競合して読み込み失敗してんだなこりゃ。困ったね~。 ひとまず読み上げは他の使うことで回避したけどどうしたもんだろう。

VOICEVOXはCoreを直接読み込むんじゃなくて別プロセスのEngineを呼び出す方法もある。しかしこれだと毎度別にVOICEVOXを起動しとかないといけないのでめんどくさいねえ。 sherpa-onnxの方を別プロセスにする手もあるんだが、その実行ファイルどこでどうやってビルドするのめんどくさい。 あとはsherpa-onnxは今回使ってたsherpa-onnx-nodeの他にWASM版のsherpa-onnxというのがある。これはおそらくCPUで1スレッドしか使えないかわりに全部WASMになってるのでバイナリとか考えずに使えるのではなかろうか。 今もどっちにしろCPUしか使えてないしCPUで十分足りてるし、バイナリの問題がなくなるならexe化しても自然に動くはず。 ただ問題はnodejsの18以上が必要とのことで、今使ってる古いnodejsおよびElectronをアップグレードしないといけない。うーんつらい。

でもほんと古いnodejsとElectronを使い続けるのつらすぎるし普通にアップグレードはした方がいいよなあ。やるか~。そのうち。


ページのトップへ | トップ 最新 | 追記 | kumaryu.net by kumaryu