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