Forum Replies Created
-
AuthorPosts
-
hark.jpの人でないけど、参考になればと思いコメントいたします。
Qiitaに、TAMAGO-03とarecordコマンドで、8chのwavを作る方法の記事を書いたので、もしよろしくしければ、ご確認いただけますと幸いです。
https://qiita.com/ferimori/items/3acbff744f71b18e268aご回答ありがとうございます。
> Pythonでの非同期処理についての知識が必要ですので、簡単にできるとは言いがたいです。
承知しました。頑張ればできるということですね。
インメモリDBを経由することで10ms未満での連携が実現でているのは確認できています。が、その他の機能を実現する際にHarkPythonのコードだけでの非同期処理の実現どうしても必要になりそうなので、そもそも実装可能か知りたかったためご質問させていただきました。簡単でないけどできると保証していただけたので、安心して実現方法を調べられるので大変助かりました。> ネットワーク実行開始からデータが取得されるまでの期間は
> PyCodeExecutor3からダミーのデータを出力しておく等の対応が必要となります。
承知しました。ありがとうございます。追記)なんとか解決したいので、調べた内容を追記させてください。
自分で、HARK(MultiAudioStreamFromMic)のソケット通信に相当する部分と同じような動作をする擬似HARKをpythonで作成して、音声をソケット通信で送っている側のpythonのコード(コード変更なし)の動作を確認したところ、問題なく動作しました。
また、現在のHARKと同じ現象がおきる状況があって、それは、擬似HARKのスレッド生成時に、sleepを入れていない場合でした。
自分のコードが間違っている可能性もありますが。。。。。追記させていただきます。
- This reply was modified 4 years, 2 months ago by moriya.
勘違いで動いていたように見えただけでした。1ファイルしか出力されなかったです。
MatrixToMapにすると8チャネルになるけど、、定位情報で分離にはMap<int,…. で渡す必要があると理解しました(やっと教えていただことを理解できました)。お手数おかけしてすみません….。> HARKでは、音源分離を周波数領域で行うよう実装していますので、変換せずに分離することはできません。
と教えていただきましたが、ドキュメントみていると、SaveRawPCMノードは、INPUTにSOURCESがなくドキュメントにもGHDSSが必須と書いてあるが、SaveWavePCMノードは、INPUTにSOURCESがあるので、実際に以下のネットワークで分離できそうかやってみたら、分離できていそうな感じです。やはり実際は分離できていないのでしょうか?どこの理解が間違っていますでしょうか?よろしくお願いいたします。
AudioStreamFromMic(SaveWavePCMのinputに接続)
↓
SaveWavePCM ← ConstantLocalizationで0,180度を指定しsourcesに接続(本来はhark-pythonで動的に渡す予定)
↓
sep_0.wav, sep_1.wav出力
追記) USBでTamago-03を2台接続した場合は、問題なく録音できました
(一応、上記確認後に、NETWORKにしてこれまで確認した内容を確認してみましたが、やはり変わらずダメでした)。自己解決しました(hark-pythonが外部APIからjson取得して、必要な値を次のノードに渡せました)。
お手数おかけしてすみませんでした。追記)ポート変更して試してみましたが、解決せずです。
OUTPUTに「AUDIO0」のみ、DEVICEに「192.168.0.12:520922:520923」のようにポート変えても動きますが、AUDIOを2つにして、片方のポートを変えても同じでした。今まで1番目に100は送られてきてたけど、それすらない状態です。追記します。パラパラとすみません。
ポートがかぶっているので、接続先IPごとに、制御とotherのポート変更しないといけない気がします。。。どうやって変更可能でしょうか?
すみません。ポートの変更方法は、FQAにありました。
https://wp.hark.jp/faq/#In_receiving_acoustiv_signal_over_TCPIP_using_AudioStreamFromMic_we_have_to_set_DEVICE_TYPE_to_NETWORK_and_the_DEVICE_to_IP_address_How_do_you_specify_the_port_number_Is_there_a_format_to_be_used- This reply was modified 4 years, 2 months ago by moriya.
追記
DEVICEに指定するIPの順序を逆にすると、1番目に指定したIPの方に100が送られてきますが同様にエラーで落ちます。以下でも書きましたが、harkをwindows版ではなく、linux版にすると900が正しく送られてきます(自前pythonコードは変更なし)。
https://wp.hark.jp/forums/topic/terminate-called-without-an-active-exception/上と同じ状況で、windowでpython動かして、harkにsocket通信した場合、「既存の接続はリモートホストに強制的に切断されたした」となるため、自作pythonでなくharkがコネクションを切っていると思います。
ご回答ありがとうございます。
> HARKでは、音源分離を周波数領域で行うよう実装していますので、変換せずに分離することはできません。
> また、MapSelectorBySourceノードへの入力は分離処理後の音源を想定していますので、ご提示の構成ではフィルタリングできないかと思います。
承知しました。> HARKに関しては、少し先になりますが無料の講習会がございます。
> 音響処理の理論を解説しながら、HARKの機能・技術を紹介する場となっておりますのでHARKをご理解いただくための一助となれば幸いです。
ありがとうございます。都合があえば是非参加させていただきたいと思います。ご回答ありがとうございます。
1点わからないのですが、、今回、時間と角度でフィルタリングしますが、周波数領域でフィルタリングする必要ないと思っていました。SourceByDirectionの代わりとなる独自ノードで動的に角度を渡すようにして、音声を落としたりくっつけた方が計算コスト低そうに思ったのですが、ご回答いただいたように、FFTしてGHDSS後に逆FFTしないと難しいと考えた方がよいということでしょうか? HARK的には一度、周波数領域に変換しないと私が実現したいことおができない or 処理効率が悪い という理解でよいでしょうか?
または、HARKのデータ構造上、時間軸上での処理では、時間と角度でフィルタリングできないという理解でことでしょうか?
上記では、beamformingでフィルタリングしたいと書きましたが、
beamformingにこだわりはないので、外部から渡した指定方向の音声だけwaveで保存したいだけなので、例えば、以下のような感じで実現できるないかなぁと考えています。AudioStreamFromMic ↓ MatrixToMap ↓ MapSelectorBySource ← 独自ノード(動的にSOURCE情報を渡す) ↓ 他のMapSelectorの結果との結合 ← MapSelectorBySource ← 独自ノード(同様の機能) ↓ SaveWavePCM
以下を読んで、パラメータを動的に変えるのではなく、localizeMUSICの代わりになるノードをhark-pythonで自作して前段に指定すれば良さそうと思ったので、一度試して不明だったら改めて質問させていただきます。
https://wp.hark.jp/forums/topic/hark-python%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
-
AuthorPosts