openly-jp / voiscribe

1 stars 0 forks source link

show the progress rate of a recognition #299

Closed ooyamatakehisa closed 1 year ago

ooyamatakehisa commented 1 year ago

Related Issue

What

https://github.com/openly-jp/voiscribe/assets/44559556/159963de-3d51-4078-b67f-3354013453bc

Memo

変更が結構大きいのでコミットごとに見たほうがいいかもです。

todo

ooyamatakehisa commented 1 year ago

ごめん微妙に動画バグってる(RecordDetailsで認識が進んでも新たなTranscriptionLineが追加されていない)ので修正するけど、コミット数多いからレビューはしていただいて結構です!

ooyamatakehisa commented 1 year ago

バグ修正終わり

ooyamatakehisa commented 1 year ago

@shibukazu このPRのdescriptionにも少し書いたけど、もうモデルのロードとかfreeModelとかすべてDispatchQueue(label: "recognize")の中にいれていい?そしたら

から色々チェックとかも減りそうだし、認識タスクの実行中にモデルのfreeとかが行われることを防げるし(これ)、


まあ今そもそもfreeModelされるのってchangeModelでモデル変更するときだけで、今は認識中はモデル変更できないようになってるから、実際大丈夫といえば大丈夫なのか。で、もしこういう変更とかするのをキューに入れるなら、認識中でもモデルを変更できるようにできるな。Viewではモデル変更されたようにして、実際にはモデル変更のタスクはまだキューの中に入ってるみたいなことになって結構ややこしくなるけど。

shibukazu commented 1 year ago

@shibukazu このPRのdescriptionにも少し書いたけど、もうモデルのロードとかfreeModelとかすべてDispatchQueue(label: "recognize")の中にいれていい?そしたら

  • viewとは並列に動く

  • 認識タスクとは直列にうごく

から色々チェックとかも減りそうだし、認識タスクの実行中にモデルのfreeとかが行われることを防げるし(これ)、

  • 284

とかも解決できそう?


まあ今そもそもfreeModelされるのってchangeModelでモデル変更するときだけで、今は認識中はモデル変更できないようになってるから、実際大丈夫といえば大丈夫なのか。で、もしこういう変更とかするのをキューに入れるなら、認識中でもモデルを変更できるようにできるな。Viewではモデル変更されたようにして、実際にはモデル変更のタスクはまだキューの中に入ってるみたいなことになって結構ややこしくなるけど。

これぜひやってほしいです 認識中でもモデルが(View上では)変更できることに関しては特に問題はないと思います。

ooyamatakehisa commented 1 year ago

ごめん、キューの中にloadとか入れるのはやるけど、前の認識がおわってなくてもモデル変更できるようにするっていうのはやめとくわ。今ってどのモデルが選択されてるかってRecognitionManager.mode@Publishedにしてることで、ロードされたタイミングで自動的に選択中モデルの表示も変わるようになってるけど、ビュー上だけで変更できるようにするってことはまた色々@State追加しないといけなさそうで結構めんどくさそうなので...

shibukazu commented 1 year ago

ごめん、キューの中にloadとか入れるのはやるけど、前の認識がおわってなくてもモデル変更できるようにするっていうのはやめとくわ。今ってどのモデルが選択されてるかってRecognitionManager.mode@Publishedにしてることで、ロードされたタイミングで自動的に選択中モデルの表示も変わるようになってるけど、ビュー上だけで変更できるようにするってことはまた色々@State追加しないといけなさそうで結構めんどくさそうなので...

これってつまり、現状はView上での変更と実際のモデルの変更が結びついちゃってるってことですかね? であれば確かにめんどくさそうなのでキューの中にloadを入れてSequentiallyに実行されることを担保するだけで十分です!!

ooyamatakehisa commented 1 year ago

@shibukazu RecognitionManagermodelプロパティの値がかわったら@publishedによってビューの再レンダリングされるから結びついてるといえば結びついてるけど、まあDRYとは言わんけど似たようなどのモデルが選択されてるかみたいな情報をビューにも持たせるのは(上で俺が提案したみたいにビューのモデルの変更と実際のモデルの変更を分けない限りは)冗長な気がするからまあこれでいいかなと個人的には思う。ビューがモデル側(ビジネスロジック側)に依存するのはまあコントローラーがユースケースに依存するのと同じでいいかな的な。

と思ったけど、 #222 と少し関係してるけど、今ってロード自体は非同期で行われてるのに、モデル変更のビューの更新自体は同期的(変更が完了しないと表示は切り替わらない)で、なんかチグハグな気もするし、ロードに時間がかかるようなモデルはやっぱり実際にロードが完了するよりも先にビュー上では変わったほうきもするな。まあFuture Workですね。

とおもったけど、 https://github.com/openly-jp/voiscribe/issues/303#issuecomment-1606023718 ここに書いた通り簡単に対応できた。