2024年6月22日土曜日

raspi Mp3プレーヤに機能追加

 Mp3プレーヤにネットラジオの機能等を追加してみた。

使い方
①Sw1(GPIO2)Sw2(GPIO3)Sw3(GPIO4)に以下の機能を持たせた。
Sw1:次のファイルへ Sw2:前のファイルへ Sw3:ポーズ、再開
Sw3+Sw1:次のフォルダへ  Sw3+Sw2:前のフォルダへ
②指定フォルダ内に任意にフォルダを追加して、中にはmp3ファイル以外に拡張子.urlのファイルを入れられるようにした。urlファイルにはネットラジオのURLと曲名(音声合成で読み上げるためのもの)を入れておくと、ネットラジオにもアクセスできるようにしてみた。
(例としてNHK第二の場合.
https://radio-stream.nhk.jp/hls/live/2023501/nhkradiruakr2/master48k.m3u8
nhkだいにほうそう
)
なお、mp3は、フォルダ内での番号を音声合成するようにした。
③最後にアクセスしたファイルとフォルダから、次回、電源入れたときに再開できるようにした。
Mp3Player.py

・ChatGPTも使いながら、半日ほどで完成。ChatGPTを使わなかったら、おそらくもっと時間がかかったかもしれない。一気に、コードを作ると、どこにバグがあるかチェックが大変になるので、もとになるコードに少しずつ機能を追加する方法をとった。
・ChatGPTも、けっこう間違ったコードを出してくるし、音声再生やGPIO等のハード面の癖で理屈通り動かないこともあるので、その都度、修正したり、試行錯誤する必要があった。とはいえ、知識が豊富なので、いろいろな解決方法を提示してくれて非常に助かる。ChatGPTが出てきたことにより、プログラマーの仕事は、コーディング作業というより、アイデアづくりとBugFixがメインになりそうだ。
・SDカードをいちいち入れ替えたりせず、sambaを使って、ファイルを追加したり、機能の変更ができるので、便利に使えそうだ。WIFIドングルが使えるとさらに便利だろうけど、残念ながら古いraspi用のドライバが入手できなくなっていて(サイトが閉鎖?)諦めた。ドライバのソースコードがあればコンパイルという手もありそうだが、ハードルが高い?

※その後、動作しないことがあったので、確認してみると、player_state.jsonファイルが、うまく保存されていないことが原因のようだった。まだ、コードに若干バグがあるかもしれない。このファイルを削除すると、起動できた。

※radikoも再生できるように修正してみた。
sudo apt install jq が必要です。
http://mycc.s33.xrea.com/data/rpi/lis_radiko.tar.gzからスクリプト入手しました。
tar zxvf で解凍し、chmod +xで実行権限与えます。
http://radiko.jp/index/ のURL内のアドレス参照して./lis_radiko.sh YBCなどのようにして再生するようにしてみた。
radikoの再生は、.rdkというファイルをradikoというフォルダの中に用意して、局名を指定するようにしてみた。
※さらに、radikoの場合、曲名を音声合成で話すようにしてみた。(LCD表示も考えたが、節約のため、音声合成としてみた。)
 https://raspida.com/speech-synthesis/を参考に、セットアップ
※jsonファイルが壊れることがあったので、初期化コマンドを追加した。3つのスイッチを同時押しで、呼び出すようにした。
※radikoの再生が、フォルダ変更の際に止まらないので、dummyの局を再生しようとすることで、止めるようにした。力技的だが。
※SW1+SW2で連続再生(MP3のみ)できるようにした。連続再生をやめたいときは、SW1かSW2をOn。


0 件のコメント:

コメントを投稿