PEP668エラー回避のヒント:pipxの活用

最近のUbuntuRaspberryPiを使用しているとpipコマンドでライブラリのインストールをするときにPEP668のエラーが出てきます。 以下は最新のRaspberryPi OSであるDebian GNU/Linux 12 (bookworm)pipコマンドを使用してnumpyを インストールしてみた結果になります。

$ pip install numpy
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

エラーメッセージはaptコマンドを使用したインストールとpipコマンドでインストールがバッティングするのでvenvを使用してねというメッセージになります。最近のPythonのライブラリ関係はライブラリとしての使用はもちろんなのですが、エントリーポイントのような形で単体で動くコマンドのような役割を持ったものも多く存在しています。そのため、pipコマンドでのインストールでは仮想環境であるvenvを使用したほうが環境の混濁にならないのでいいですよ~という警告になります。もちろん、このあたりの回避方法はオプションスイッチの指定であったり、設定ファイルなどを使用すれば回避可能です。

【参考】

blog.jp.square-enix.com

ですが、その他の方法として、pipxという方法もあるようです。先程のpipコマンドを実行時には表示されていませんでしたが、以前は以下の表示がありました。pipxを使用するのが簡単ですよってことのようです。

 If you wish to install a non-Debian packaged Python application,
 it may be easiest to use pipx install xyz, which will manage a
 virtual environment for you. Make sure you have pipx installed.

【参考】

peps.python.org

自分はpipxの存在については初耳でもあったので、ちょっと調べてみました。

続きを読む

RaspberryPi5の”電源ボタン”について調査する🔍

自分の元にもRaspberryPi5がやってきました。今回は結構ラッキーなタイミングで告知を見ることができたので購入できました。ただ、到着まではなぜかかなり時間がかかってしまい、初期購入勢のブログをみてあーネタがなくなってしまうなあという感じでした。新製品のスタート直後の情報は生モノです。

ascii.jp

ひとしきりネタがなくなってきてはいますが、購入前から気になっていた電源ボタンについてどんな感じなのか調べてみました。

RaspberryPi5の電源ボタン

RaspberryPi5にはこれまでなかった電源ボタンがあります。

SDカードの近くににあります。以前から電源ボタンがあるといいのにと思うことがかなりあったので、これはいいんじゃない?と気になっていました。これまでは電源共有用のケーブル(ACアダプタ)に電源スイッチのついたものを使用していました。これはこれで便利なんですが、製品によっては電源不足になるようなケーブルもあるので過信はできない状況でもあります。

現在はこちらに落ち着いています。ケーブルの太さは細いですが、RaspberryPi4Bでも電源不足にはなっていません。

では、USB Type-Cコネクタ経由で電源ケーブルを接続すると…電源が入りました😯おや?普通にブートしてしまいます。「電源ボタンの意味とは?」という顔になってしまいました。

この動きはどうも想定どおりのようなので、その他はどういう挙動になるかを調べてみます。では、RaspberryPishutdownをしてみます。自分は最近はpoweroff派です。

$ sudo poweroff

通電したまま(赤いLEDが点灯したまま)shutdownが行われました。本体には電源が通電しています。ここで、電源ボタンを押すと…再起動しました。shutdown後に再起動するには電源ケーブルの抜き差しが必要だったので、これはちょっと便利かなってレベルでした。

続きを読む

煩雑なインストール不要!Pythonから簡単にOpenJTalk

ここ最近VOICEVOXを使用して音声合成を楽しんでいましたが、その中でよくOpenJTalkを使用すればもっと軽くリアルタイムにできるのに…ということも言っていました。以前は自分もOpenJTalkを使っていたのですが、インストールの手順が煩雑だったのでいまいち手が出ないというのが正直なところでした。

参考

uepon.hatenadiary.com

それも2016年のこと、現在ではどうなっているか改めて調べてみたところ、Pythonから簡単にOpenJTalkが使用できるラッパーであるpyopenjtalkがある事がわかりました。あまりにも簡単に導入ができるので、今後は導入はこれ1つで良いと思います。

github.com

続きを読む

RaspberryPiの音声合成にリアルタイム性を求めるには?VOICEVOX Engineの活用

以前はVOICEVOX CORE(コアライブラリ)をRaspberryPiへインストールして音声合成を試してみたのですが、合成されるまでにかなりに時間がかかってしまうため、リアルタイムのコミュニケーションに使用するには実用性が低いという結果でした。

uepon.hatenadiary.com

そこで今回はRaspberryPiからLAN内にインストールをしたVOICEVOX Engine(EngineはWebサーバーとしてREST APIを提供)にアクセスして音声合成の結果のみをもらうという形で使用してみたいと思います。一見あまり意味がなさそうに思いますが、同様にしてRaspberryPi Zero WなどからAPIアクセスすれば、かなり非力なデバイスでも音声合成を使用することができるかなと思います。

VOICEVOX Engineのインストール

VOICEVOX EngineGitHubリポジトリは以下となります。

github.com

プラットフォーム用のバイナリ(自分の場合にはWindows版)をダウンロードする方法とDockerコンテナを使用する方法があります。

Windows版は環境毎にダウンロードを行って展開すればインストールは完了します。含まれているrun.exeを起動することでAPIへのアクセスができるようになります。GPUがある場合には積極的にそちらを使用しましょう。

github.com

続きを読む

UbuntuやRaspberry Piでも利用可能な音声合成エンジンEdge-TTSの導入方法

先日来使用しているVOICEVOXですが、PCであればかなり高速に処理をすることができるとはいえ、リアルタイム性?というところではやはり処理時間がかかるため会話というところには使用が難しいと思いました。そこで、他にもなにかないかなと思い探してみることにしました。結果的にOpenJTalk一択かもしれないのですが、それ意外の可能性も捨てたくないですよね。

今回はEdge-TTSを使用してみることにします。EdgeというとWindowsの標準ブラウザというイメージがあるので、Windows意外では使用できないのでは?と思われる方もいるかと思いますが、今回使用するEdge-TTSはWindowsでの使用はもちろん、EdgeブラウザのインストールされていないLinux環境RaspberryPiでも使用できる点は非常に便利かなと思います。あとは、電子工作なでと状況に合わせた使用できるかという観点についても調べてみたいと思います。

【参考】

github.com

pypi.org

今回試してみた環境

今回試してみたのはUbuntu Desktop 22.04 LTSRaspberryPi OS最新版となります。

【RaspberryPi OSの実行環境】

Edge-TTSの導入方法

edge-ttsのインストールはPythonの開発環境があれば非常に簡単です。

Pythonのライブラリを含めて使用する場合にはpipコマンドから以下のようにすればOKです。

$ pip install edge-tts

また、プログラミングを行わないで単にコマンド実行で行うこともできるので、この利用法であれば、以下のコマンドでインストールができます。

$ pipx install edge-tts
続きを読む
/* -----codeの行番号----- */