Pythonパッケージ中でパッケージに同梱したファイルを読み込む

Python 3.7以降の場合、標準モジュールimportlib.resourcesが利用できる。 https://docs.python.org/ja/3/library/importlib.html#module-importlib.resources 以下のようなディレクトリ構造でファイルを同梱する。 setup.py MANIFEST.in README.md LICENSE mymodule __init__.py mymodule.py mydirectory __init__.py myfile1.txt myfile2.bin 注意点 読み込むファイルのあるディレクトリに__init__.pyを作成する MANIFEST.inでファイルがパッケージに同梱されるように記述する include README.md include LICENSE recursive-include mymodule/mydirectory * import importlib.resources as ILR # テキストファイル ILR.read_text('mymodule.mydirectory', 'myfile1.txt', encoding='utf-8') # -> str # バイナリファイル ILR.read_binary('mymodule.mydirectory', 'myfile2.bin') # -> bytes

2022年5月27日 · aoirint

JSONファイルに記録したLocal Naiveな時刻をUTC Awareに一括変換するPythonスクリプトのスニペット

https://gist.github.com/aoirint/c231ab43436ce6c3aafe2097dbb77f0e クローラの時刻情報を一度Local Naiveで保存してしまったのでUTC Awareに変換するために作成した (まあ変換処理事故って何度もデータ飛ばしてしまったんだけど) https://twitter.com/aoirint/status/1524287849759408129

2022年5月22日 · aoirint

気象庁HP API

https://www.jma.go.jp/bosai/forecast/ エリア一覧 https://www.jma.go.jp/bosai/common/const/area.json https://www.jma.go.jp/bosai/forecast/const/forecast_area.json https://www.jma.go.jp/bosai/forecast/const/en_amedas.json 祝日一覧? https://www.jma.go.jp/bosai/forecast/const/anniversary.json 週間用エリアID一覧? https://www.jma.go.jp/bosai/forecast/const/week_area.json 枝番エリア一覧? https://www.jma.go.jp/bosai/forecast/const/week_area05.json https://www.jma.go.jp/bosai/forecast/const/week_area_name.json 天気予報 日間概況 https://www.jma.go.jp/bosai/forecast/data/overview_forecast/{ID}.json 東京地方ID: 130000 週間概況 https://www.jma.go.jp/bosai/forecast/data/overview_week/{ID}.json 天気予報(3日先まで、7日先まで) https://www.jma.go.jp/bosai/forecast/data/forecast/{ID}.json 日間警報 https://www.jma.go.jp/bosai/warning/data/warning/{ID}.json 定数を調べる: console.log(JSON.stringify(Forecast)) Pythonラッパー https://github.com/aoirint/aoirint_jmapy https://pypi.org/project/aoirint-jmapy/ 整形例 https://gist.github.com/aoirint/52c778ea00a9b1d080299eea2ced67b3

2022年5月22日 · aoirint

Akashic Engine

$ node -v v14.18.3 https://www.npmjs.com/package/@akashic/akashic-cli npm install -g @akashic/[email protected] https://akashic-games.github.io/guide/akashic-cli.html#init akashic init --type typescript width: 1280 height: 720 fps: 30 git init git commit -m "Initial Commit" --allow-empty git add . git commit -m "first" npm install npm start open http://localhost:3000/game/

2022年5月21日 · aoirint

GitHub Actions Tips

mainブランチにpushされたときに実行 on: push: branches: - main Releaseが作成されたときに実行 on: release: types: - created 三項演算子的なやつ ${{ env.VARIABLE }}の形式 ${{ condition && 'true_value' || 'false_value' }} ${{ github.event.release.tag_name != '' && github.event.release.tag_name || 'latest' }} 注意: true_valueがboolean的にfalseと解釈される値(空文字列)であってはならない。その場合、true_valueとfalse_valueを交換してconditionを反転させる。 文字列が空文字列の場合は空文字列、そうでなければ加工した文字列を変数に格納する、という方法で文字列を少しずつ加工していくと複雑な文字列が作りやすい 文字列の結合 フォーマット関数を使う :区切りで結合: ${{ format('{0}:{1}', env.VARIABLE_A, env.VARIABLE_B) }} 便利なAction 大抵の場合、READMEに用例が載っているのでコピペして使う 新しい機能、細かい機能、細かい挙動は載っていなかったりする。そのときはコードを読む Dockerイメージのビルド・プッシュ: https://github.com/docker/build-push-action Docker Hubにpushする場合、アカウントを作成し、アクセストークンを取得しておく(無料プランでは1つしか作成できないので注意) https://hub.docker.com/settings/security GitHub Pagesの公開: https://github.com/peaceiris/actions-gh-pages 同一リポジトリにpushする場合、トークンなどを特別に設定する必要はない(何もしなくても、自動でgithub_tokenという変数にトークンが格納されている) 別リポジトリにpushする場合、Personal Access Tokenはリポジトリのスコープを切れないので、SSH鍵を生成してDeploy keysに登録するのがおすすめ

2022年5月21日 · aoirint

VOICEVOXへのプルリクエストを出した

15日にVOICEVOXへのプルリクエストを出した。 https://github.com/Hiroshiba/voicevox_core/pull/41 ONNX版がリリースされてからになるが、 Raspberry Pi環境で製品版VOICEVOX COREが動くようになるといい。 ONNX版への移行はいつ頃になるだろうか。 現状で動作に問題はないので、優先度はあまり高くない感じだと思う。 追加キャラクター3人を予定していて、いまはHPの改修に力を入れているようなので、 それらが終わったら手を付けられるだろうか(つむぎちゃんかわいい)。 VOICEVOXフロントエンドを動かすことは自分は考えていない。 なんか大変そう(Electronをarmhf向けにビルドするのが)なわりに、合成に時間がかかって使いにくいと思う。 コアがRasPiで動くのがおまけなら、おまけのおまけくらい。 動画編集するならamd64+NVIDIA GPUのこなれた環境でいいんじゃないかな。 コアさえ提供されていれば、動かすことは不可能ではないし、ほしければ/いい活用のアイデアがあればPRしてほしい。 ENGINEはHTTP APIがついて便利なので、あった方がいいと思う(Dockerで使いやすくなるし)。 二度手間になるので、暗号化周りが裏で実装されて、製品版ONNXコアのリリースが出てからENGINE進めるでいいかなと思っている。 まあそのうち使えるようになっていたらうれしい。 それまでは、Hacobuneとかを使うといいと思う(β版で無料)。 ライト版か外部デバイス版で推論高速化が実現しない限り、RasPi上での音声合成にはそれなりに時間がかかるので、Raspberry Pi版が出たとしても、外部のHTTP APIを使うのは有力な選択肢だと思う。

2021年11月17日 · aoirint

editorコマンドで起動するエディタを変更する(Ubuntu)

https://unix.stackexchange.com/a/204896 sudo update-alternatives --config editor

2021年11月13日 · aoirint

docker-composeでBuildKitを使う

ビルドコマンド https://stackoverflow.com/questions/58592259/how-do-you-enable-buildkit-with-docker-compose DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose build Dockerfile https://www.docker.com/blog/introduction-to-heredocs-in-dockerfiles/ # syntax=docker/dockerfile:1.3-labs

2021年11月8日 · aoirint

GitLab CI, GitLab PagesにビルドしたHTMLを公開する

https://docs.gitlab.com/ee/user/project/pages/ リポジトリのGitLab Pages機能を有効化したあと、 GitLab CI上でpagesというジョブにpublicというパスのArtifactがあるとき、 自動的にpages:deployというジョブが実行され、GitLab Pagesへのデプロイが行われる。 リポジトリがプライベートリポジトリのとき、 デプロイされたGitLab Pagesは、GitLabアカウントで認証が行われる。 .gitlab-ci.yml https://docs.gitlab.com/ee/user/project/pages/getting_started/pages_from_scratch.html#specify-a-stage-to-deploy image: ruby:2.7 workflow: rules: - if: '$CI_COMMIT_BRANCH' pages: stage: deploy script: - gem install bundler - bundle install - bundle exec jekyll build -d public artifacts: paths: - public rules: - if: '$CI_COMMIT_BRANCH == "main"'

2021年11月6日 · aoirint

VOICEVOX Core 0.5.1をUbuntu + GPU + Pythonで使う(exampleを動かすまで)

※ VOICEVOX Coreにより生成した音声の利用にあたっては、VOICEVOX Coreの添付文書・利用規約を必ず確認し、従ってください。 https://github.com/Hiroshiba/voicevox_core Ubuntu 20.04.3 LTS (Focal Fossa) Python 3.9.6 (pyenv) NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 cuDNN 8.2.4 VOICEVOXを使った音声合成について VOICEVOXの音声合成の仕組みについては、以下の記事が参考になるかもしれません。 VOICEVOXの音声合成エンジンの紹介 | Hiho’s Blog VOICEVOX Coreを効果的に使うには、ある程度音声合成の専門知識が必要になると思います。 簡易にTTSを利用したい場合には、VOICEVOX EngineのHTTP APIを使うことをおすすめします。 voicevox_engine API Document VOICEVOX Engineは、公式Dockerイメージが公開されています。 https://github.com/Hiroshiba/voicevox_engine https://hub.docker.com/r/hiroshiba/voicevox_engine VOICEVOX Coreのインタフェースについて Details わたしは音声合成については素人ですが、参考のため現在の理解を書いておきます。 VOICEVOX Coreでは、 「音素ごとの長さの推定 replace_phoneme_length / yukarin_s_forward」、 「モーラごとの音高の推定 replace_mora_pitch / yukarin_sa_forward」、 「音声波形の推定 synthesis / decode_forward」の3つの深層学習モデルを使って音声合成します。 OpenJTalkには、辞書に基づいてテキストを解析し、アクセント句・モーラ・アクセント位置・疑問文フラグなどの情報で構成された フルコンテキストラベルというデータに変換する機能があります。 フルコンテキストラベルの仕様は、以下のURLを開き、 HTS-2.3 > Speaker dependent training demo > Japanese > tar.bz2からHTS-demo_NIT-ATR503-M001.tar.bz2をダウンロード・展開し、 data/lab_format.pdfを見ると英語で記述されています。 ...

2021年9月11日 · aoirint