回答編集履歴

2

訂正

2025/01/14 10:53

投稿

teamikl
teamikl

スコア8791

test CHANGED
@@ -24,3 +24,5 @@
24
24
  (環境によってはエラーメッセージが出ない・出てる場所が解らないこともあるので、
25
25
  エラーが正常にされるのを確認の上)try/except がループの外側なので、
26
26
  何らかのエラーがあった場合に、ループは抜けて処理が終わることになります。
27
+
28
+ 追記: ↑の場合は、ブロッキング処理がないから、質問にある「フリーズ」には該当しませんでした。訂正。

1

文章訂正

2025/01/14 01:55

投稿

teamikl
teamikl

スコア8791

test CHANGED
@@ -1,20 +1,20 @@
1
1
  ライブラリは使ったことありませんが、
2
- フリーズしそうな気になった点を調べたところ
2
+ フリーズしそうな気になった点を調べたところ
3
3
 
4
4
  > ノンブロッキングに、wirte()しています。
5
5
 
6
6
  OutputStream.write はブロッキング・メソッドです。
7
7
  https://python-sounddevice.readthedocs.io/en/0.5.1/usage.html#blocking-read-write-streams
8
8
 
9
- ブロッキングでも、async/await 対応なら write 時にも await があるはずです。
9
+ なった点 async/await 対応なら write 時にも await があるはずです。
10
- (訂正: 非同期でブロッキングはダメなので、⇒ 仮にノンブロッキングでなくても)
11
10
 
12
11
  ノンブロッキングに書き込む場合は callback 形式になるようですが、
13
12
  コードの見た目だけでも 読み込み/書き込み のループで対応させたい場合は、
14
13
  キューに入れてから、別スレッドでキューからデータを読みだして write()
15
14
 
16
15
  サンプルコードに sounddevice のストリームを asyncio (aiortc は詳しくないので別途調べて) で使う方法
16
+ ありましたが、sounddevice 自体が非同期対応ではなく、
17
- ありましたが、sounddevice 自体が非同期対応ではなく、非同期フレームワークのなかでどう工夫して使うかといった感じでした。
17
+ 非同期フレームワークのなかでどう工夫して使うかといった感じでした。
18
18
  [using a stream in an asyncio coroutin](https://python-sounddevice.readthedocs.io/en/0.4.6/examples.html#using-a-stream-in-an-asyncio-coroutine)
19
19
 
20
20
  `await stream.write(...)` みたいな事はできないようです。