mieki256's diary



2024/09/01() [n年前の日記]

#1 [linux][editor] ne (nice editor)を試用

Linux の仮想端末上で使える ne (nice editor) というテキストエディタの情報を目にしたので試用してみた。nano と似た感じで使えるエディタらしい。

環境は、Windows10 x64 22H2 + VMware Workstation 17 Pro 17.5.2 build-23775571 + Ubuntu Linux 20.04 LTS。

_ne, the nice editor
_ne (テキストエディタ) - Wikipedia
_Ubuntu Manpage: ne - A nice editor

注意点。ne という同じ名前で、全然違うテキストエディタも存在しているらしい…。ややこしい…。

インストールは以下。
sudo apt install ne

「ne」、もしくは 「ne ファイル名」で起動する。

ショートカットキーは、一般的なWindows用アプリケーションと似せてある模様。
スクリーンショットを見たらメニュー表示があって「?」となったけど、ESCキーを2回叩けば出てくるらしい。メニューがあるだけでも色々操作できそうな気分になるなと…。

#2 [linux][windows][editor] micro editorを試用

Linuxの仮想端末上で使えるテキストエディタ、micro editor を試用してみた。これも nano と似た感じで使えるらしい。

環境は、Windows10 x64 22H2 + VMware Workstation 17 Pro 17.5.2 build-23775571 + Ubuntu Linux 20.04 LTS。

_Micro - Home
_いま熱い最新スクリーンエディタmicro ことはじめ - Qiita

インストールは以下。
sudo apt install micro

micro もしくは micro ファイル名、で起動する。

ショートカットキーは以下のような感じ。
一般的なWindows用アプリケーションのショートカットキーと一致させている部分が多いテキストエディタらしい。Windowsでの操作に慣れている場合は、nano よりは使いやすいかもしれない。

しかし、例えば ~/.icewm/toolbar を開いた場合、micro editor は色付け表示してくれないけれど、nano なら色付け表示してくれる。

更に nano なら、日本語表示でキー割り当てを画面に常時表示してくれてるので、少し注意して使えば nano でも事足りるのではないかという気もする…。

ファイルタイプの変更方法 :

ファイルを開いてから、そのファイルのファイルタイプを変更することができると分かった。

Ctrl + e を打つと「>」が表示されて入力待ちになるので、set filetype conf と打ってやれば設定ファイル類の色付け表示(シンタックスハイライト)になる。例えば ~/.icewm/toolbar も、上記の指定をすれば色付け表示された。

_How to set syntax for config files without extension? - Issue #2080 - zyedidia/micro

事前に、設定ファイルに指定を記述しておくこともできる。~/.config/micro/settings.json が micro editor の設定ファイルなので、その最後のほうに、例えば以下のような感じで記述をしておけば、そのファイルを開いた際のファイルタイプを指定できる。
{
    (中略)
    "/home/(USERNAME)/.icewm/toolbar": {
        "filetype": "conf"
    },
    "/home/(USERNAME)/.icewm/preferences": {
        "filetype": "conf"
    }
}

micro editorをWindowsにもインストール :

micro editor は Windows版もあるので、micro editor 2.0.14 をWindows10 x64 22H2上でもインストールしてみた。

_Release 2.0.14 - zyedidia/micro

micro-2.0.14-win32.zip を入手して解凍。中に入っている以下のファイルを、パスの通った任意のフォルダに置いた。
micro.1
micro.desktop
micro.exe
micro.svg

DOS窓やWindowsターミナルで、micro と打てば起動する。

MSYS2上でもインストール :

MSYS2上でもパッケージが用意されていた。32bit版は無くて64bit版のみの模様。

_Package: mingw-w64-x86_64-micro - MSYS2 Packages

これもインストールしてみた。
pacman -S mingw-w64-x86_64-micro

micro と打てば起動する。

余談。環境情報を表示してくれる neofetch もパッケージになっていることに気づいたのでインストールしておいた。
pacman -S neofetch
neofetch

_Base Package: neofetch - MSYS2 Packages

2024/09/02(月) [n年前の日記]

#1 [pc] NVMe SSDをM.2 SSDケースに入れてみた

弟から貰った NVMe SSD を M.2 SSDケースに入れてみた。


_価格.com - ADATA XPG SX8200 Pro ASX8200PNP-2TT-C スペック・仕様
_HDE-13A | Ainex

CrystalDiskMark 8.0.4 を使ってベンチマークも取ってみた。

------------------------------------------------------------------------------
CrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo
Crystal Dew World: https://crystalmark.info/
------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
  SEQ    1MiB (Q=  8, T= 1):   381.151 MB/s [    363.5 IOPS] < 21946.83 us>
  SEQ    1MiB (Q=  1, T= 1):   365.875 MB/s [    348.9 IOPS] <  2865.20 us>
  RND    4KiB (Q= 32, T= 1):   230.490 MB/s [  56272.0 IOPS] <   567.78 us>
  RND    4KiB (Q=  1, T= 1):    41.249 MB/s [  10070.6 IOPS] <    99.20 us>

[Write]
  SEQ    1MiB (Q=  8, T= 1):   412.651 MB/s [    393.5 IOPS] < 20254.67 us>
  SEQ    1MiB (Q=  1, T= 1):   390.950 MB/s [    372.8 IOPS] <  2680.16 us>
  RND    4KiB (Q= 32, T= 1):   220.855 MB/s [  53919.7 IOPS] <   592.97 us>
  RND    4KiB (Q=  1, T= 1):    70.906 MB/s [  17311.0 IOPS] <    57.65 us>

Profile: Default
   Test: 128 MiB (x3) [W: 0% (0/1908GiB)]
   Mode: [Admin]
   Time: Measure 5 sec / Interval 5 sec 
   Date: 2024/09/01 19:47:45
     OS: Windows 10 Professional [10.0 Build 19045] (x64)
Comment: ADATA XPG SX8200 Pro USB3.0接続

adata_xpg_sx8200_pro_usb3_0_20240901.png


なんだかビミョーな速度…。ううーん。

以下に、SATA接続 HDDと、SATA接続2.5インチSSDの結果を並べてみるけど…。

hdd_toshiba_dt01aca200_sata_20240901.png

ssd_plextor_px_256m2p_sata_20240901.png


今回のUSB3.0接続SSDは、SATA接続のHDDより3倍ぐらい速い。しかし、SATA接続の2.5インチSSDと比べると読み込みが遅い…。

更に調べてみたところ、このSSDは本来の接続の仕方 ―― M/B の M.2 SSD端子に接続した場合、これより一桁高い速度を出してくれる可能性があるらしい。数倍どころではなく、マジで一桁違う。

_価格.com - ADATA XPG SX8200 Pro ASX8200PNP-2TT-C atatame03さんのレビュー・評価投稿画像・写真「高コスパで文句なしの性能」[531637]
_価格.com - ADATA XPG SX8200 Pro ASX8200PNP-2TT-C Selubiさんのレビュー・評価投稿画像・写真「2TBのコスパならこれ」[504851]

ただ、M/B上で差してしまうと、PCケース内で熱源が一つ増える。この手のSSDって発熱がスゴイとも聞くので不安…。これがもし、USB3.0接続のSSDケースに入れた場合、速度は出ないけれど、その代わり発熱も少なくて済みそうだよなと…
どうしたもんか…。いや、さすがに速度が一桁違うのはアレだから、内蔵かなあ、とも思うけど。

内蔵も検討して、M.2 SSD用のヒートシンクについてググって眺めてみたけれど、ヒートシンクを抑えるシリコンゴムが数ヶ月で劣化してボロボロになるという話も見かけて…。皆どうやって固定してるんだ…。

内蔵SSDのファイルをコピーしてみた :

HDD-Scan 2.0 を使ってエラーが出ないことを確認した後、内蔵SSD PLEXTOR PX-256M2P に入っていたゲーム関連ファイルを、この外付けSSDにコピーしてみた。

FireFileSync を使って、CRCを取りつつベリファイしながらコピーしてみたところ、大量にファイルコピーエラーが出た。転送先のSSDの問題ではなく、転送元、内蔵SSD PLEXTOR PX-256M2P 内のファイルが壊れてしまっていたらしい。

ここ最近、特定のシーンデータを読み込もうとした際にゲーム自体が落ちてしまって悩んでいたけれど、データファイルが正常に読み込めない状態になっていたから落ちていたのだな…。

幸い、コピーエラーが出たファイルは外付けHDDに残っていたので、エラーが出たファイルだけ、外付けHDDからコピーしてきた。ゲームも正常に動作するようになってくれた。

内蔵SSDに対して、管理者権限でDOS窓を開いて chkdsk X: /R をかけてみたら、不良セクタ云々が大量に出てきた。弟から、「なんだか動作が怪しい気がするから欲しいならやるよ」と言われて貰ったSSDだったけど、本当に怪しいSSDだった模様…。

2024/09/03(火) [n年前の日記]

#1 [pc] NVMe SSDをM/Bに載せてみた

昨日、NVMe接続用SSD ADATA XPG SX8200 Pro 2TB (ASX8200PNP-2TT-C) を、USB3.0接続外付けM.2対応SSDケースに入れて動作確認していたのだけど。

読み取り/書き込み速度が、本来の速度より一桁遅い点が気になって…。試しに、M/B上でNVMe接続してみることにした。


_B450M S2H (rev. 1.x) 主な特徴 | マザーボード - GIGABYTE Japan

このM/Bの _「M.2サポートリスト」 には記述が無かったので、使えるのかどうか不安だったけど、フツーに認識してくれた。助かった…。

CrystalDiskMark 8.0.4 で速度を測定してみたら、以下のような結果になった。

------------------------------------------------------------------------------
CrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo
Crystal Dew World: https://crystalmark.info/
------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

[Read]
  SEQ    1MiB (Q=  8, T= 1):  3498.779 MB/s [   3336.7 IOPS] <  2396.19 us>
  SEQ    1MiB (Q=  1, T= 1):  3185.873 MB/s [   3038.3 IOPS] <   328.97 us>
  RND    4KiB (Q= 32, T= 1):   601.981 MB/s [ 146968.0 IOPS] <   210.78 us>
  RND    4KiB (Q=  1, T= 1):    61.509 MB/s [  15016.8 IOPS] <    66.45 us>

[Write]
  SEQ    1MiB (Q=  8, T= 1):  3040.466 MB/s [   2899.6 IOPS] <  2751.54 us>
  SEQ    1MiB (Q=  1, T= 1):  2809.928 MB/s [   2679.8 IOPS] <   372.89 us>
  RND    4KiB (Q= 32, T= 1):   436.586 MB/s [ 106588.4 IOPS] <   299.96 us>
  RND    4KiB (Q=  1, T= 1):   223.573 MB/s [  54583.3 IOPS] <    18.22 us>

Profile: Default
   Test: 128 MiB (x3) [X: 17% (323/1908GiB)]
   Mode: [Admin]
   Time: Measure 5 sec / Interval 5 sec 
   Date: 2024/09/03 8:16:15
     OS: Windows 10 Professional [10.0 Build 19045] (x64)
Comment: ADATA XPG SX8200 Pro 2TB NVMe接続

adata_xpg_sx8200_pro_nvme_20240903.png.png


USB3.0接続した場合の結果は以下。

adata_xpg_sx8200_pro_usb3_0_20240901.png

本当に一桁違っている。

発熱が心配 :

速くなった分、発熱も凄かった。アイドル時40度が、アクセスを始めると一瞬で54度まで上がった。ちなみに、USB3.0接続時は、アイドル時33度、アクセス時41度ぐらいだった。

もっとも、このSSDは、Gen3 なる区分の製品だそうで…。もっと高速な Gen4、Gen5 があるらしいけど、それらに比べると Gen3 は、速度が遅い分、発熱も少ないのだとか。これでもマシなほうなのか…。

この製品のパッケージには、ヒートシンクと称している一枚の黒い板が同梱されていて、一応ソレは貼ってある状態だけど。各種レビュー記事によると「ほとんどお飾りみたいなもの」との話もあって…。もうちょっとソレらしいヒートシンクを使ったほうが安心できるのだろうか。でも、固定方法で悩む…。シリコンゴムは数ヶ月で劣化してボロボロになるという話ばかり見かけるし…。

まあ、アクセスが速いということは、アクセスしてる時間も短くなるはずだから、すぐアイドル状態になってくれるだろうし。ある温度を超えると壊れないように速度を落としてくれるという話も見かけたので…。壊れないといいな…。

余談。AINE HDE-13Aについて :

昨日使用した、USB3.0接続外付け M.2 SSDケース AINEX HDE-13A だけど、せっかくだから写真を撮ってみた。

ainex_hde_13a_ss01.jpg

ainex_hde_13a_ss02.jpg


使用チップは、JMS583 らしい。

ググってみたら、JMS583 は AMD B450チップセットとの組み合わせだと不具合が起きるという話が…。自分の使ってる M/B とは相性が悪い可能性があるのだな…。

昨日は、Anker製USB3.0ハブ経由で繋いでいたのだけど、そういう構成なら不具合が緩和されたりしないかな…。どうなんだろう。

余談その2。SSDを取り付けた状態 :

SSDを取り付けた状態の写真を撮っておいたので、メモ代わりに貼っておく。

adata_xpg_sx8200_pro_ss01.jpg

逆さまで「XPG」と書いてあるのがSSD。手前にはUSB3.0増設ボードがある。一旦USB3.0ボードを ―― PCI Express x1 接続のボードを外さないと取り付け作業ができない。そして、この状態だと背の高いSSDヒートシンクをつけるのは難しい。増設ボードにぶつかってしまう。

2024/09/04(水) [n年前の日記]

#1 [linux][ubuntu][pc] Ubuntu機のHDDをSSDに換装

256GBのSSDが一つ浮いたので、Ubuntu Linux 22.04 LTSをインストールして使っているサブPCのHDDをSSDに換装してみた。ただし、転送元HDDの容量は1GB、転送先SSDの容量は256GB。大容量のストレージから小容量のストレージにクローンする作業になる。

HDDとSSDの型番は以下。



CPUやM/Bは以下。


HDDとSSDは、どちらもSATA接続した。

GPartedを入手 :

GParted Live CD を使って、転送元HDDの各パーティションを縮小リサイズして、全体的にSSDの容量に ―― 256GB以下に収める。

_GParted -- A free application for graphically managing disk device partitions
_GParted -- Download

この手の作業に必要になるのは以下のツール。
  • GParted
  • ddrescue
  • testdisk
この3つは GParted Live CD に入ってる。

ちなみに、KNOPPIX 9.1 DVD が起動するUSBメモリでも試してみたけれど、そちらに入ってる GParted はリサイズ処理すらエラーを出してしまって正常に動かなかった。GParted Live CD を使ったほうがハマらずに済むかも。ISOのサイズも小さくて済むし。

gparted-live-1.6.0-3-i686.iso (483MB) を入手。

USBメモリにISOを入れて起動させるために、UNetbootin (unetbootin-windows-702.exe) も入手。

_UNetbootin - Homepage and Downloads

Windows10 x64 22H2上で UNetbootin を起動して、Gparted の iso をUSBメモリに書き込んだ。USBメモリは16GBの品を使ったけれど、今回は 2GB 程度あれば足りたかもしれない。

何はともあれ、Gparted Live CD が入ったUSBメモリで起動。
  • VGA云々と表示されてる3番目の項目を選ぶ。
  • Keymap はそのまま。
  • Laungauge は Japan を選択。15 を入力。
  • 0を選んでX11を起動。
自動で Gparted が表示されるので、各パーティションを縮小リサイズ、かつ、移動して詰めていく。適用ボタンをクリックすると、指定した処理が実際に行われる。

ddrescueでディスクを丸々コピー :

GParted でリサイズや移動をして、SSDの容量、256GBより少ない感じにまとめたら、GParted を終了。Terminal を起動。ddrescue を使って、セクタ単位で、ディスクを丸々コピーする。

一般的には dd を使って作業することが多いらしいけど、ddは不良セクタがあった場合にそこで処理が止まってしまうらしい。ddrescue なら不良セクタはスキップして処理してくれるのだとか。

dd にしろ ddrescue にしろ、転送先SSDの容量が小さいので、「これ以上転送できない」「サイズがおかしい」的なエラーが最後に出てくるけれど、そこは無視して作業する。後で testdisk を使って不整合な部分を修正してしまうので…。

転送元HDDが /dev/sda、転送先SSDが /dev/sdc なら、以下のように打つ。
sudo ddrescue -f -v /dev/sda /dev/sdc logfile.log
-f は上書き指定。-v は詳細表示(進捗状態の表示)。logfile.log は、ログファイル名。

今回の、SATA接続で、HDD → SSD に256GBを転送する処理では、1時間ほどで終わってくれた。なんだか早過ぎる気もするけど…。

testdiskで修復 :

testdisk を使って、パーティションテーブルがおかしくなった状態のSSDを修復。
sudo testdisk

操作は以下を参考にした。

_パーティション情報を削除してしまったHDDの復旧を Ubuntu 上の TestDisk を用いて復旧する。 - KusoBoze is here.

UUIDを変更したいのだけど上手く行かない :

HDDやSSDのパーティションには、UUIDというIDがついてる。このUUIDは重複しない値がついてるはず、ということになっている。

昔の Linux は /dev/sda1 とか /dev/sdb2 とか、そういう記述形式で各パーティションを指定していたけれど。この形式ではHDDやSSDを接続するポートを変えてしまったときに、各パーティションの判別名も変わってしまうので都合が悪い。そこで、各パーティションにUUIDをつけて管理しようということになったらしい。

以下で、パーティション一覧や、各パーティションのUUIDが確認できる。
lsblk
sudo blkid

ddrescue でコピーした直後は、HDDとSSDの各パーティションに同じUUIDがついてしまっている。このままだとUUIDを使ってパーティションを特定できなくなる…。どちらかのUUIDを変更したい。

しかし、これが上手く行かない。本来なら、GParted でパーティションを右クリックして「New UUID」を選べば変更できそうなのだけど…。「e2fsck -f を使え」云々のエラーしか出てこない…。どうしたもんか…。

LABELをつけておいた :

Linuxは、/etc/fstab というファイルで、どのパーティションをどのディレクトリにマウントするか指定できるけど。その際、UUIDではなくて、ラベル(LABEL)を使うこともできるらしい。

今回、重複したUUIDが存在していてパーティションの特定ができない状態になっているし、どう考えてもラベルのほうが人間には分かりやすいので、そのような指定に修正することにした。

GParted で、各パーティションにラベルを設定する。右クリックして「Label File System」と書かれた項目を選べば、ラベル名を入力するダイアログが開く。

今回は以下のような指定にした。
  • / にするパーティション : ROOT
  • /home にするパーティション : HOME
  • linux-swap にするパーティション : SWAP

SSD (/dev/sdc) 内の、/etc/fstab が入ってるパーティション(/dev/sdc1)を一時的にマウントして、/etc/fstab を修正できるようにする。
sudo mkdir /mnt/sdc1
sudo mount /dev/sdc1 /mnt/sdc1
cd /mnt/sdc1
cd etc
sudo nano fstab

/etc/fstab を編集。UUID=xxxxx と書かれている部分を、LABEL=ROOT といった感じで書き換えておく。
# /etc/fstab: static file system information.
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
LABEL=ROOT /               ext4    errors=remount-ro 0       1
LABEL=HOME /home           ext4    defaults        0       2
LABEL=SWAP none            swap    sw              0       0

grubをインストール :

SSDにgrubをインストール。以下を参考にして作業させてもらった。

_HDDからSSDへの換装作業ログ
_UbuntuのHDD 2TBからSSD 512GBへのLarger HDD to Smaller SSD換装を行う
_ubuntu BOOT Grub Restoring 起動 復旧 | 市野メモ

実機をシャットダウン後、電源を入れたら、何故かHDD側から Ubuntu Linux が起動してしまったのだけど。これ幸い(?)と、まだマウントされていないはずのSSDに対してgrubをインストール。
sudo mkdir /mnt/sdc1
sudo mount /dev/sdc1 /mnt/sdc1
sudo mount --bind /dev /mnt/sdc1/dev
sudo mount --bind /dev/pts /mnt/sdc1/dev/pts
sudo mount --bind /proc /mnt/sdc1/proc
sudo mount --bind /sys /mnt/sdc1/sys
  
sudo chroot /mnt/sdc1
sudo grub-install /dev/sdc
sudo grub-install --recheck /dev/sdc
sudo update-grub2
exit

umount /mnt/sdc1/sys
umount /mnt/sdc1/proc
umount /mnt/sdc1/dev/pts
umount /mnt/sdc1/dev
umount /mnt/sdc1

この状態で、シャットダウン。HDDを外してSSDだけにして電源を入れてみたところ、SSD側から起動してくれた。

UUIDが変更できた :

色々ググってたら、e2fsck -f を何度も試すとUUIDが変更できる状態になるかも、という話を見かけた。

HDDとSSDの両方を繋いだ状態で作業するとどうも上手く行かないので、実機からHDDを取り外して、Windows10 x64 22H2 がインストールされてる別PCで作業してみることにした。USB3.0接続HDDスタンド Logitec LGB-1BSTU3 にHDDを差して、Windows + VMware 上で動かした Ubuntu Linux 22.04 LTS からHDDスタンドにアクセス。ちなみに、VMware利用時、USB機器を「ホストから切断」すれば、そのUSB機器は仮想PC側で利用できるようになる。

HDD (dev/sdb) に対して、e2fsck -f を3回ぐらい試してみた。
$ sudo e2fsck -f /dev/sdb1
e2fsck 1.45.5 (07-Jan-2020)
Pass 1: Checking iノードs, blocks, and sizes
Pass 2: Checking ディレクトリ structure
Pass 3: Checking ディレクトリ connectivity
Pass 4: Checking reference counts
Pass 5: Checking グループ summary information
ROOTOLD: 757242/3842048 files (0.5% non-contiguous), 10278914/15360107 blocks

$ sudo e2fsck -f /dev/sdb1

$ sudo e2fsck -f /dev/sdb1

この状態なら、UUIDの変更ができた。
sudo tune2fs /dev/sdb1 -U random

HDDに対してUUIDの変更をする場合、書き換えには数分ほどかかるっぽい…。

そういえば、本来この手のツールは、SATA接続されている状態を前提にして使うことを、うっかり失念したまま作業してしまった…。USB接続では上手く行かない時があったりするのかもしれない…。どうやら今回は上手く行ったっぽいけど…。

SSDのUUIDを変更してしまって失敗 :

HDD側のUUIDを変更できたので、調子に乗ってSSD側のUUIDまで変更してしまったところ、SSDから Ubuntu Linux を起動できなくなった…。カーネルのロードすらできない。

おそらく、grub にカーネルがある場所をUUIDで指定していたのに、そのUUIDが変わってしまったので、カーネルがあるパーティションを見つけることができず、起動できなくなったのだろう…。

修復には、別途、OSが起動する何かを用意しないといけない。Ubuntu Linux 22.04 LTS が起動するUSBメモリを作成して、そちらで起動して、grub を再インストールした。

余談。USB2.0メモリを使ってこのあたりの作業したらとんでもなく時間がかかった。OSが起動するまで、USBメモリのアクセスLEDがずっとチカチカ。10分以上経過してから、ようやくデスクトップ画面が出てきた…。

btrfsとやらで待たされる :

SSDから起動するようにしてみたら、"Scanning for BTRFS file system" なるメッセージが表示されたタイミングで、そこから30秒ぐらい待たされる状態になってしまった。

Linux Mint 関係の掲示板で同種の不具合事例を目にした。解決策も書いてあった。

_SOLVED "Scanning for BTRFS file system" during boot - Linux Mint Forums
sudo apt-get purge btrfs-tools
sudo update-initramfs -ukall
sudo apt purge btrfs-progs
sudo update-initramfs -ukall

おそらく、btrfs関連パッケージを削除しつつ、initramfs なるものを作り直しているのだろう…。

SSDに変えてはみたものの :

HDDからSSDに換装してみたところ、OSのデスクトップ画面が出てくるまで2分かかっていたのが、40秒で出てくるようになった。

たしかに速くはなった。でも、期待していたほど速くもない印象。と言うのも、もしこれが Debian Linux なら、HDDにインストールしてある環境でも1分ぐらいで起動してくれるので…。

Ubuntu Linux は、何故か起動が遅い…。いやまあ、こちらが把握してない色々なサービスが山ほど立ち上がってるとか、サポートしてるハードウェアの種類が多くてハードウェアのチェックで時間がかかってたりするのかなと想像するのだけど。

とは言え、Webブラウザの起動等、明らかにHDD利用時より速くなった気もする。これなら、Webブラウザを起動させようかな、という気分にもなれそう。今までは起動時間が長過ぎて、起動させなきゃならんのか、やだなあ…みたいな気分になっていた…。

2024/09/05(木) [n年前の日記]

#1 [ubuntu][linux] Ubuntu LinuxをUSBメモリにインストールしてみた

サブPCにインストールしてある Ubuntu Linux 22.04 LTS が起動しない状態になった際、USBメモリから Ubuntu Linux Live DVD を起動して grub の再インストールをする羽目になったのだけど。

USBメモリから起動できる Ubuntu Linux を常に用意してあれば、こういう時に一々USBメモリに Ubuntu Linux Live DVD をインストールせずに済むから楽だろうかと思えてきた。できれば、Live DVD の iso を書き込む形ではなく、USBメモリをHDD扱いしてインストールする形のほうがいいなと…。ということで試しに作業。

インストールするメディアとしては、16GB の microSDHC + カードリーダーをUSBメモリ代わりに使った。手持ちのUSBメモリより microSD のほうが書き込みは速いので…。
さて、USBメモリをHDD相当として扱って Ubuntu Linux をインストールする場合、一般的には、USBメモリを2つ用意して、1つには Ubuntu Linux Live DVD をRufus等で書き込んで、そのUSBメモリからOSを起動しつつ、もう1つのUSBメモリにインストールしていく、という感じになるらしい。

ただ、今回は、Windows10 x64 22H2 + VMware で作業してみた。VMware上の仮想PCは、光学ドライブにisoを指定することができるので、isoからOSを起動して、インストール処理を進めて、インストール先のメディアを仮想HDDイメージではなくUSBメモリにしてやればいい。

ちなみに、仮想PCが立ち上がった時点で、VMware でUSBメモリを「ホストから切断」してやれば、仮想PC側でUSBメモリを認識することができる。

そんな感じで、Ubuntu Linux 22.04 LTS をUSBメモリ(microSDHC)にインストールして、サブPC上で起動できるところまでは確認できたのだけど…。sudo apt update、sudo apt upgrade をしてみたら、途中で「空き容量が無い」と言われてしまった。16GBでは、さすがに厳しいか…。32GB、できれば 64GB以上の容量が欲しい…。

Ubuntu Linux 22.04 LTS のデスクトップ版をインストールしたのがマズかっただろうか。Ubuntuをベースとして作られた、軽量と称されるディストリビューションなら ―― Lubuntu や Linux Lite なら容量的に少なく済んだりしないか…。試してみるか…。

#2 [ubuntu][linux] SSDの状態をLinux上で調べる

SSDの状態を、Ubuntu Linux 22.04 LTS上で調べたい。

_smartctlを利用してデバイスの健康状態を診断する(S.M.A.R.T.) - Qiita
_Linux/UbuntuのsmartctlでS.M.A.R.T.対応HDD/SSDの診断情報を表示する - 情報技術の四方山話

Ubuntu Linux 22.04 LTS の場合、smartmontools パッケージをインストールして、smartctl を使えば、S.M.A.R.T.値を読み取れるらしい。また、gsmartcontrol パッケージもインストールすれば、GUIで値を確認できる。

sudo apt install smartmontools gsmartcontrol

$ smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device

$ sudo smartctl -a /dev/sda
$ sudo smartctl -A /dev/sda

たしかに読み取れたけど、各値が何を示しているのかさっぱり分からない。

gsmartcontrol を起動して確認してみたら、今までメインドライブとして使っていたHDDはこれといった問題が無さそうに見えたけど。SSDも、追加した別HDDも、値一覧の中にピンク色で表示されている部分がチラホラあって…。このまま使い続けてもいいのだろうか…。一応、smartctl で表示した際、下のような一行は出ているから、S.M.A.R.T.値としてはまだ大丈夫なのかもしれんけど…。
 === START OF READ SMART DATA SECTION ===
 SMART overall-health self-assessment test result: PASSED

#3 [ubuntu][linux] LinuxでSSD関係の設定を少しだけ確認

Ubuntu Linux 22.04 LTS上でSSD関係の設定を確認しておきたい。

TRIMの設定を確認 :

以下を参考に作業。

_SSD-Trim、HDDデフラグ、いつやるか(ubuntu系Linux) : ご年配Linux
_Linux:SSDを搭載後にした設定 - SlackNote

$ sudo systemctl enable fstrim.timer

$ sudo systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
     Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Thu 2024-09-05 21:05:43 JST; 3min 47s ago
    Trigger: Mon 2024-09-09 01:13:29 JST; 3 days left
   Triggers: ● fstrim.service
       Docs: man:fstrim

 9月 05 21:05:43 i36100t systemd[1]: Started Discard unused blocks once a week.

$ sudo systemctl cat fstrim.timer
# /lib/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim
ConditionVirtualization=!container
ConditionPathExists=!/etc/initrd-release

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
RandomizedDelaySec=6000

[Install]
WantedBy=timers.target

見た感じ、週単位で処理が走るように設定されているのかな…? であれば、特に設定する部分は無いかな…。

noatime の指定 :

/etc/fstab で noatime を指定すればストレージへの書き込み量が減って云々という話も見かけたのだけど。

ググっていたら、「今時の Ubuntu Linux のカーネルはデフォルトで realtime が指定されてるから noatime なんて指定しなくていいよ」 みたいな話を見かけた。

_最新のFedoraとUbuntuではrelatimeもnoatimeもいらない? - 科学と非科学の迷宮
_Linuxのrelatimeマウントオプションの詳細 - Qiita

であれば、コレも特に指定し直すことは無いかな…。

#4 [zatta] 100円ショップでミリペンを購入

手持ちのミリペン、Sakura PIGMA のペン先が乾いてしまって使えなくなっていた。代わりの個体を入手しようにも、近所で PIGMA を売ってる店は無いので困ったなとググってみたら、今時は100円ショップにもミリペン(ドローイングペン)の類が売ってる時もあると知った。気になる…。

100円ショップ Seria に寄ってみたところ、幸い店頭で売っていた。005 と 03 の2種類があった。2種類とも購入。パッケージには、水性 Milli-pen for Illustration、イラスト用ミリペン、と書いてある。発売元 ナカトシ産業株式会社。MADE IN CHINA。水性顔料インク。インクが乾くと、耐水性、耐アルコール性になるらしい。

少し使ってみた感じでは、悪くないなと。たしかにミリペンというか、PIGMAに近い印象。

ついでに、Seria で油性サインペンも購入。パッケージには、「油性サインペン PIN-01A」「01 OIL-BASED」と書いてある。インクは黒。三菱鉛筆株式会社。MADE IN VIETNAM。

少し使ってみたけれど、今まで利用していた SAKURA MICROPERM 01 と比べてしまうと、かなり太い線というか、極太な印象。これは買って失敗したかも…。

2024/09/06(金) [n年前の日記]

#1 [ubuntu][linux] 軽量Linuxと称されるディストリビューションをUSBメモリにインストールしてみた

_昨日、 Ubuntu Linux 22.04 LTS デスクトップ版を、16GBのUSBメモリ(microSDHC)にインストールしてみたら容量不足になってしまった。そこで、Ubuntuをベースにして作られた軽量ディストリビューションと言われているそれぞれをインストールしてみた。

Linux Liteをインストール :

軽い軽いと言われている、Linux Lite というディストリビューションがあるらしい。

_Linux Lite Easy to Use Free Linux Operating System
_全世界中で羽のようだと大好評の Linux Lite 6.6 をインストールしてみました。 | 極楽はぜのブログ

現状では Linux Lite 7.0 が公開されているけれど、7.0 は Ubuntu 24.04 LTS がベースとのことなので、Ubuntu 22.04 LTS をベースにしている Linux Lite 6.6 を選択した。linux-lite-6.6-64bit.iso を入手して作業。

昨日の作業と同様に、Windows10 x64 22H2 + VMware を使って、16GBのUSBメモリ(microSDHC)へのインストールはできたのだけど…。Ubuntu 22.04 LTS より空き容量が厳しい状態になった…。Ubuntu と比べて、LibreOffice や GIMP等がインストールされているせいだろうか。sudo apt update はできるけど、sudo apt upgrade をする前に、不要なパッケージを sudo apt purge xxxx でアンインストールして空き容量を確保しておかないと厳しい…。

やはり16GBのストレージにインストールするのは厳しいなと…。

考えてみたら、HDD/SSDのパーティションサイズ/位置を変更するだけなら Gparted Live CD を使えば済むわけだし。Ubuntu系のソレが必要なのは grub の再インストール作業時ぐらいだから、GUI ではなく CUI だけ動けば十分なのかもしれない。デスクトップ版ではなく、サーバ版を入れればそれで済むのかも…。

Bodhi Linuxをインストール :

これまた軽量と言われている Bodhi Linux をインストールしてみた。

_Bodhi: The Enlightened Linux Distribution
_Ubuntu の仲間で最軽量かもしれない Bodhi Linux-7.0をインストールしました。 | 極楽はぜのブログ

Bodhi Linux 7.0 は Ubuntu 22.04 LTSベースとのことなので、7.0 を選択。bodhi-7.0.0-64.iso を入手して作業。

これも Windows10 x64 22H2 + VMware 上で作業してみたけど、作業が終わってもシャットダウンできなかった…。VMware側の不調だろうか。

容量はかなりイイ感じ。復旧作業時に必要になりそうなパッケージ(gparted, gddrescue, testdisk, vim, ranger等)をインストールしてみたけれど、全部で8.7GBぐらいで済んだ。16GBのmicroSDHCでも全然収まってくれそう。デスクトップ統合環境ではなく、ウインドウマネージャしか入ってないあたりが効いてるのだろうか。

ただ、Webブラウザが Chromium というのがちょっと引っ掛かる。Chromiumって重い印象なのだけど…。

もっとも、今時のWebにアクセスするなら Chromium系じゃないと、という判断かなという気もする。例えば Firefox では利用できない/対応していないWebサービスがチラホラあったりするし。その点 Chromium なら、どのサービスも利用できるはず。

2024/09/07() [n年前の日記]

#1 [ubuntu][linux] LubuntuをUSBメモリにインストールしてみた

_昨日、 Linux Lite や Bodhi Linux を、16GBのUSBメモリ(microSDHC)にインストールしてみたけれど、今日は Lubuntu Linux 22.04 LTS をインストールしてみた。

インストール作業は、Windows10 x64 22H2 + VMware 上で行った。仮想PCを新規作成して、lubuntu-22.04.4-desktop-amd64.iso から起動するようにする。USBメモリをホストから切断すれば、仮想PCから認識されるので、インストール処理の途中で、インストール先をUSBメモリにすればいい。

LibreOffice や VLC をアンインストールして、その他必要になりそうなパッケージをインストールしてみたけれど、結果的に、16GB中、9.2GBぐらいを使った状態になった。

このぐらいの容量で済むなら、Linux Lite や Bodhi Linux を使うより、素直に(?) Lubuntu を使ったほうがいいのかも。おそらくドキュメント類も Lubuntu のほうが多そうだし…。

パッケージのアンインストール作業その他 :

sudo apt purge libreoffice* -y
sudo apt purge vlc -y
sudo apt autoremove -y

sudo apt install aptitude vim micro ne gparted testdisk gddrescue sakura net-tools -y
sudo apt install fcitx5-mozc fonts-ipafont fonts-ipaexfont fonts-takao fonts-vlgothic -y
sudo apt install gedit gedit-plugins

パスワード無しでsudo :

本来、sudo visudo で、sudo 利用時のパスワード入力を省略する指定ができるはずなのだけど、ファイルの一番最後の行で記述しないと反映されなかった。Lubuntu だけ、そのあたり特殊なのかもしれない。

_Lubuntu::sudo | ヘンコウリレキ

sudo visudo

yourname ALL=(ALL:ALL) NOPASSWD: ALL

2024/09/08() [n年前の日記]

#1 [pc] サブPCのBIOSをアップデートしておいた

サブPCのM/B、ASRock Z170M EXTREME4 の BIOSを、7.20 から 7.40 にアップデートしておいた。とメモ。

M/Bのスペックは以下。



BIOS入手先は以下。

_ASRock > Z170M Extreme4 > BIOS


BIOSアップデート手順は以下。 2〜3回再起動がかかる。

アップデートした理由 :

Ubuntu Linux 22.04 LTS の起動時に、以下のメッセージが出てくるのが気になったので、BIOSを更新したら改善されないかと期待したのだけど、結果は変わらなかった。

[    0.075496] DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x000000007800000-0x0000000088ffffff], contact BIOS vendor for fixes
[    0.099386] x86/cpu: SGX disabled by BIOS.

_Ubuntu日本語フォーラム / DMAR:Firmware Bug:No firmware reserved〜で起動も再インストールもできません
_SOLVED DMAR: Firmware Bug: No firmware reserved region can cover this RMRR - Linux Mint Forums

このメッセージは無視して構わないという話も見かけた。ログレベルを変更することで目にしない状態にできる模様。

#2 [pc] PCケースのフロントパネルを壊してしまった

メモするのを忘れてたのでメモ。先日、サブPCにSSDを追加しようとした際、PCケースのフロントパネルを外そうとして、フロントパネルの一番上の突起を割ってしまった。金属のケース部分の穴に差し込んで、引っ掛けて固定するための突起なのだけど…。

この手のPCケースのフロントパネルって、大体はプラスチック製だから、数年経つと劣化して割れやすくなってしまう。だから、外そうとして「パキッ」と割ってしまいがち…。この設計ってどうにかならんか…。せめてネジ止めにするとかできないのかな…。

まあ、メーカにしてみたら、製造直後にパチンとハマれば「ハイ、オッケー。問題無し」な感覚で設計してるんだろうけど。何度も外したり取り付けたりすることを前提にしてないよな…。いや、そういう前提で設計されてるケースもあるだろうけど、たぶん値段が高いのではないか。自分、安いケースばかり買ってきたから…。

何かこう、スポンとまっすぐ入ったらちょっとやそっとじゃ動かなくて、だけどどこかをちょっとアレするとスポンと外れる、そういう仕組みを作れないものか…。

例えば電池ボックスの蓋みたいな? いや、その手の蓋は板を固定する形だからアレで済むのかな。PCケースのフロントパネルは金属部分を覆うような形だからちょっと違うかも。複数個所に、押したら抜ける感じのソレをつけても良さそうだけど、人間の腕は2本しかないから一度に2ヶ所しか押せないし…。うーん。

#3 [movie] 「ブレードランナー 2049」を視聴

BS12で放送されてたので視聴。名作映画「ブレードランナー」の続編。初見。

フツーに面白かった。特に設定面がイイ感じ。いや、人によってはありがちな設定と言い出しそうでもあるけれど、こういう設定、個人的に好きなんで…。

押井守監督曰く、「キャラ、ストーリー、世界観。この3つのうちどれかが成立してれば映画になる」「宮さんの映画はキャラしかない。俺の映画は世界観しかない」とのことだけど。その3つの評価軸で言えば、この映画は世界観しかない映画に相当するのかもしれないなと…。それはそれでOKというか、それもまた、映画を名乗っていいよなと…。

AI嫁設定 :

バーチャルAI彼女の設定が実に良かった。あの設定は色々応用が利くというか、広げていけそうな気がする。なんとなく、メガドラゲームの「パルスマン」を思い出したりもした。パルスマンの彼女って彼の腕時計の中だけで生きてるという設定で…。

今期は、人型ロボットをテーマにしたSF(?)ロボットアニメが複数放送されていて。
  • 只の家電ロボを自分の嫁と思い込み続ける独身男性の姿を描く「僕の妻は感情がない」
  • 謎の少女型ロボットを人間扱いするかどうかで悩み続ける「ATRI -My Dear Moments-」
この二作品とも、実体というか肉体を持った人型ロボットを描いているのだけど。そこにこの映画のバーチャル彼女設定を重ねてみると、ロボット嫁、AI嫁という設定も幅が出てくるというか、まだまだ色んな見せ方ができそうだなと妄想できそうな気もしたり。

それはともかく、ハリソン・フォードが演じる前作の主人公って、結局のところ人間なのか、それともレプリカントなのか…。この映画を見ても、自分は未だに分からないです…。

2024/09/09(月) [n年前の日記]

#1 [pc][neta] USBとはなんぞや

思考メモ。

ここ数日やっていた作業の関係で、目の前に何本もUSBメモリが散乱しているのです。邪魔。片付けたい。まとめて収納できる箱みたいなものは無いのかな。もし無かったら自分で作るしかないかな。そう思いながらヒントになりそうなアイデアがどこかに無いかググってたのですけど。その手のページを眺めているうちに、ふと気づいたのです。

もしかして…。世間様って、「USBメモリ」のことを「USB」と略し始めてる? 「USBメモリ」とは書かれてなくて、「USB]としか書いてないページをチラホラ見かけたのですけど…。いやまあ、文章の流れで、「ここで言ってるUSBってUSBメモリのことだろうな」とは分かりますけど。

こういう呼び方してるのは日本人だけかなと思っていたら、外国の人もUSBメモリをUSBと略しちゃってる動画を目にしてしまって。海外もかよ…。

でもまあ、世間様がそういう呼び方を始めちゃっているなら、もはや誰が何を言ってもその流れは止められないので…。こっちも諦めて、USBメモリをUSBと呼ばなきゃいけないことになるのかなあ、と…。

でも、本当にそんな呼び方しちゃっていいんだろうか。何か後になって問題が起きたりしないのだろうか。どうなんだろう。

「こないだUSBを買ったんだけど動かないんだよー」
「(USBを買った…? USBメモリのこと? それともUSB接続のHDD? SSD?) もうちょっと症状を詳しく」
「USBを繋げばネットに繋がるはずじゃない? 繋がらないんだよー」
「(USB接続無線LAN子機のことかー!) それはルータのSSIDを選んでキーを打ち込んで…」
「今までそんなことしたことないよ? ケーブル繋げばネットに繋がったけど」
「(USB接続有線LANアダプターのことかー!)」

みたいなことになるのかな。いや、これはUSBメモリをUSBと略してる事例とはまたちょっと違うか…。

思考メモです。オチは無いです。

そもそもUSBメモリも、USB接続スティックメモリを略してそうな気もする…。いや、USBフラッシュドライブをUSBメモリと呼んでるのかな…。それがいよいよUSBの3文字にまで略されつつあるのだろうか…。

2024/09/10(火) [n年前の日記]

#1 [linux] antiX Linux 23.1をVirtualBox上で試用

Debianベースの軽量Linux antiX 23.1 64bit版 base を、仮想PCソフト VirtualBox 7.0.20 r163906上でインストールして試用してみた。Windows10 x64 22H2 + VirtualBox で試してる。

以前試用した時のメモを参考に作業。

_mieki256's diary - antiXを試用
_mieki256's diary - antiX 22 を VMware Player上で試用してみた

インストール作業 :

公式サイトから、antiX-23.1_x64-base.iso を入手。

_Download - antiX Linux

antiX には、full, base, core, net の4種類があるけれど、今回は、インストールされるアプリが少な目だけどデスクトップ(ウインドウマネージャ)が表示されるbaseを選んだ。

仮想PCの設定は以下。
  • OS種類 : Debian 12 Bookworm 64bit
  • RAM : 2GB
  • CPUコア : 2個
  • チップセット : ICH9
  • GPU : VMSVGA - VRAM 128MB
  • 仮想HDDイメージ : 16GB

光学ドライブの設定で antiX-23.1_x64-base.iso を指定して起動。言語やタイムゾーンを選んでから起動して、起動後はデスクトップのインストールアイコンをクリック。滞りなくインストールできた。

容量は圧倒的に少ない :

必要になりそうなアレコレをインストールしたけれど、ストレージ使用量は 5.1GBで収まった。

Ubuntuベースの軽量ディストリビューションは以下のような結果だったので…。
  • Linux Lite : 16GBをオーバー
  • Bodhi Linux 7.0.0 : 8.5GB
  • Lubuntu Linux 22.04 LTS : 9.1GB
これらと比べると圧倒的にストレージ使用量が少なくて済んだ。antiX なら8GBのUSBメモリにもインストールできてしまうかも。

VirtualBox Guest Additionsのインストール :

VirtualBox上で動かしているので Guest Additionsをインストールする。コレをインストールしないと、クリップボード共有、フォルダ共有、画面解像度変更が使えない。

デバイス → Guest Additions CDイメージの挿入、を選択。/mnt/sr0 にCDイメージの中身が割り当てられるので、VBoxLinuxAdditions.run を実行。
sudo ./VBoxLinuxAdditions.run

インストールできたら、ゲストOS(antiX)を再起動して、デバイス → 光学ドライブ → 仮想ドライブからディスクを除去。

~/.desktop-session/startup に以下を追記して各機能を使えるようにする。このファイルにコマンド等を書いておくと、ウインドウマネージャの起動時にそのコマンドが呼び出される。
/usr/bin/VBoxClient-all &

例えば pub という名前のフォルダを共有すれば、共有フォルダ /media/sf_pub/ が作られる。しかし、このままでは一般ユーザが共有フォルダにアクセスできないので、ユーザを特定グループに追加してやる。
sudo adduser USERNAME vboxsf

_VirtualBoxのホスト-ゲスト共有フォルダの設定 - Qiita

IceWMの画面解像度について :

コントロールセンタ → セッション → 画面解像度の設定 (ARandR) で変更できる。

今まで display.sh という名前で画面解像度設定を保存していたけれど、default.sh で保存したほうがいいらしい? default.sh で保存したらOS再起動時に自動で解像度が変更された。

startup ファイルに、display.sh だか default.sh の実行を記述してしまうのもアリだろうか?

sudo apt updateでエラー :

sudo apt update をしてみたらいきなりエラー。以下を参考にして対処。

_antiX Linux 23.1 | デビアンな生活
wget https://repo.antixlinux.com/antix-archive-keyring_20019.5.0_all.deb  
sudo apt install -yf ./antix-archive-keyring_20019.5.0_all.deb

日本語入力 :

fcitx5 か fcitx で日本語入力したい。ただ、antiX の場合は fcitx5-mozc をインストールすると動作させるのが難しいらしい。fcitx と fcitx-mozc をインストールして使うことにした。
sudo apt install fcitx fcitx-mozc
sudo apt install fcitx-frontend*

~/.desktop-session/desktop-session.conf に以下を追記。
# set fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx

~/.desktop-session/startup に以下を追記。これで、ウインドウマネージャが起動する際に fcitx も立ち上がる。
fcitx-autostart &

Ctrl+Spaceを解放 :

antiX は Ctrl+Space でランチャーが表示されるけれど、Linux は Ctrl+Space で日本語入力の切替になる場合が多い。Ctrl + Space のキー割り当てを解放したい。

コントロールセンタ → デスクトップ → IceWM設定の編集、を選択。keys ファイルの中の、74行目あたり、Ctrl+Space の記述を、例えば Alt+Space などに置き換える。あるいは行頭に「#」をつけてコメントアウトする。これで、Ctrl+Spaceの割り当てを解放できる。

キーリピート設定 :

以下を、~/.desktop-session/startup に追記。250ms以上押し続けたら、以後は30Hzでリピートする。
xset r rate 250 30 &

CapsLockをCtrlキーにする :

/etc/default/keyboard の XKBOPTIONS= に、`ctrl:nocaps` を追加。
sudo nano /etc/default/keyboard

XKBOPTIONS="grp:lalt_lshift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp,ctrl:nocaps"

2024/09/11(水) [n年前の日記]

#1 [linux] Conkyの文字化けを修正

軽量 Linux の antiX 23.1 をインストールすると Conky という情報表示ツールもインストールされるけれど、英語フォントで日本語文字列を表示しようとして文字化けしてしまう。解決したい。

スタートボタン → コントロールセンター → デスクトップ → システムモニター(Conky)の編集、を選ぶと、テキストエディタ Geany で、Conky 設定ファイル ~/.conkyrc が開かれる。このファイルを修正して保存すれば、Conky の表示も即座に変わる。

105行近辺にフォント指定を追加。
${alignc}${time %a %d %b}
↓
${alignc}${font Sans:bold:size=10}${time %F (%a)}${font}

どうやら、「${font hogefont:bold:size=10} 〜 ${font}」で、その間だけフォントを変更して表示することができるらしい。

ちなみに、${time} は時間や日付の表示をする。%F は %Y-%m-%d と同じで、「2024-09-11」と表示される。また、%a と %A は曜日の表示。%a なら「火」、%A なら「火曜日」と表示される。

別の修正方法。27行目近辺のフォント指定を変更して、全体のフォント指定を変えてしまう手もある。
xftfont DejaVu Sans:bold:size=10
↓
xftfont Sans:bold:size=10

#2 [pc] VirtualBoxのホストキーを変更しておいた

仮想PCソフトの VirtualBox は、標準設定では右Ctrlがホストキーになっているけれど。自分が利用している際、間違って右Ctrlを使ってしまって、その都度ダイアログが出てきて困ってしまった。自分、結構、右Ctrl を無意識に使っているらしい。

_VirtualBoxのホストキーを変更する - Qiita
_VirtualBoxのホストキーを変更する | NO MORE! 車輪の再発明

ホストキーは変更できる。ファイル → 環境設定 → 入力 → 仮想マシン。「ホストキーの組み合わせ」を、右Altキーにしておいた。とメモ。

#3 [linux] antiXの標準アプリ

軽量Linux antiX が、どういったアプリを標準アプリとして扱っているのか気になった。

_複数PCでの利用に向く「antiX Linux」、USB起動でも快適 | 日経クロステック(xTECH)

2022/12/22に公開されていた上記のページによると、以下のアプリが標準アプリっぽい。
しかし、本当にそうなのだろうか…。2年前の情報だし…。antiX 23.1 64bit full版のiso(antiX-23.1_x64-full.iso)から起動して確認してみた。
base版はWebブラウザが SeaMonkey だったけど、full版は違っていて、Firefox ESR なのだな…。また、full版には LibreOffice も含まれているけれど、base版には含まれてない。

でもまあ、それ以外のジャンルは、たしかにこういったアプリが標準扱いになっている模様。

余談。SeaMonkeyでいいのだろうか :

以下のような話を見かけた。

_Seamonkeyメモ

antiX 23.1 base版に同梱されていた SeaMonkey は 2.53.18 だったけど、2.53.xx はメモリリークを起こすという話があるらしい。低いハードウェアスペック上で動かすために antiX を選んでも、Webブラウザが無駄にメモリを馬鹿食いしていたら、それはなんだかアレだな…。

アプリ一覧のスクリーンショット :

antiX 23.1 64bit full版の、スタートメニュー表示のスクリーンショットを撮ってみた。一応載せておく。ざっと眺めれば、必要最低限のアプリはちゃんと同梱されていることが分かるかと…。

antix23_1_full_64bit_appli_ss01.png

antix23_1_full_64bit_appli_ss02.png

antix23_1_full_64bit_appli_ss03.png

antix23_1_full_64bit_appli_ss04.png

antix23_1_full_64bit_appli_ss05.png

antix23_1_full_64bit_appli_ss06.png

antix23_1_full_64bit_appli_ss07.png

antix23_1_full_64bit_appli_ss08.png

antix23_1_full_64bit_appli_ss09.png

antix23_1_full_64bit_appli_ss10.png

antix23_1_full_64bit_appli_ss11.png

antix23_1_full_64bit_appli_ss12.png

antix23_1_full_64bit_appli_ss13.png

antix23_1_full_64bit_appli_ss14.png

2024/09/12(木) [n年前の日記]

#1 [linux] ROXTerm上でvimが変な文字を出してしまう

軽量Linuxの antiX 23.1 64bit は、仮想端末(仮想ターミナル、ターミナルエミュレータ)として ROXTerm を同梱している。その、antiX 23.1 64bit + ROXTerm 上で vim を使うと、vim 終了時に変な文字が出てくることに気づいた。

ROXTerm の TERM環境変数 を gnome-256color にすれば文字が出なくなるらしい。これはROXTerm の設定で変更できる。Preferences → edit Current Profile → General → TERM environment variable、で設定すればいい。

_antiX-23.1 日本語化スクリプト | ポン酢の備忘録
_Issue with vim.tiny in ROXTerm - antiX-forum
_Strange characters in vi/vim (escape sequences?) - antiX-forum

micro editorでの不具合 :

ROXTerm上で micro editor を使った際に、Shift + 矢印キーで選択ができないことにも気づいた。

他の仮想端末、例えば Sakura や LXTerminal なら、問題無く機能する。ROXTerm だけがおかしい。

ROXTerm 上で TERM を色々変更したけれど効果は無かった。

ちなみに、Sakura や LXTerminal では、TERM は xterm-256color だった。
$ echo $TERM
xterm-256color

どうも ROXTerm は動作が怪しい…。Sakura をデフォルトの仮想ターミナルとして使ったほうがいいのかもしれない。以下で、x-terminal-emulator を変更できる。一覧が出てくるので、割り当てたい仮想端末を数字で選べばいい。
sudo update-alternatives --config x-terminal-emulator 

#2 [zatta] スナップフィットというワードを知った

数日前にPCケースのフロントパネルの固定用突起を割ってしまったのだけど、そのあたりの仕組みについてググっていたら「スナップフィット」というワードがあることを知った。スナップショットじゃなくて、スナップフィット。

_スナップフィット - Wikipedia

例えば、接着剤無しで組み立てられるプラモデル ―― ガンプラでも採用されている技術/仕組みだそうで、「ガンプラ スナップフィット」でググるとたしかに関連ページが結構出てきた。

「スナップフィット」でググったら、壊れにくくするための色々なノウハウを知ることができた。突起部分の長さとか、出っ張りの幅とか、材質の弾性とか、そういったことが関係してくるらしい。突起の根元を直角にするか、カーブをつけるか、それだけでも強度が違ってくるのだとか。

_壊れづらいスナップフィット設計を出力するためのコツとは?|パラメーター、素材、出力の向き ・ 3Dプリンターとレジン&フィラメントの通販・購入はSK本舗

ただ、一度壊れてしまったものを修復する方法は見当たらなかった。そういった修理事例で、このワードを使うことは稀だろうから、まあ、出てこないよな…。

2024/09/13(金) [n年前の日記]

#1 [cg_tools] Metasequoia 4を少しだけ試用

3DCGモデリングソフト Metasequoia 4 の Standard版が無料で利用できるようになった、というニュースを目にした。有償版の Metasequoia 4 EX は12,100円だけど、入出力その他で機能制限されたStandard版は無償化、ということらしい。

_「Metasequoia 4」Standard版が無償開放 〜老舗の高機能3DCGモデリングソフト - 窓の杜
_「Metasequoia(メタセコイア)」ポリゴン単位で立体モデルを生成・編集できる3DCGモデリングソフト - 窓の杜
_3DCGモデリングソフト「Metasequoia 4」Standard版相当機能が商用・非商用問わず無償化!EX版もより安価に | Game*Spark - 国内・海外ゲーム情報サイト

Metasequoia…懐かしいな…。Metasequoia 3 は購入したけれど使いこなせなくて、そのうち結局 blender を使うようになってしまったのだよな…。

気になったので少しだけ試用してみることにした。環境は Windows10 x64 22H2。

64bit版と32bit版があるけれど、32bit版を選んだ。Metaseq490a_Win32_Installer.exe を入手して実行するとインストーラが起動する。今回は、D:\Program Files (x86)\tetraface\Metasequoia4\ にインストールしてみた。

触ってみた感想は…。最初からツールバー上にアイコンが表示されていて、見た目で分かりやすくなってる気がする。アイコン+文字表示ができるので、慣れるまでは逐一文字を読んで機能を把握して、慣れてきたらアイコンで機能を見分けることができそう。Metasequoia 3 は文字表示かアイコン表示のどちらかしか選べなかったので、このあたりちょっと不便だった。

自分が3DCGモデリングソフトを試用する際のいつものお題、マグカップをモデリングしてみたけれど、操作方法をすっかり忘れていた上に一部の機能もよく分からなくて、30分ぐらいかかってしまった。ちなみに blender なら2分ぐらいで作れる…。

作業中、頂点を移動しようとして、ついうっかりGキー(blenderのショートカット)を押してしまったりもして…。自分、やっぱり blender に慣れてしまっているなと再認識。

Metasequoia 3のユーザー登録ができなくて悩んだ :

せっかくだから Metasequoia 3.1.6 もインストールしておこうと考えた。

metaseq316.exe を入手して実行するとインストーラが起動する。今回は、D:\Prog\Metasequoia3\Metaseq31\ にインストールしておいた。

Metaseq.exe を実行して起動するところまでは確認できたものの、ユーザー登録ができなくなて悩んだ。ヘルプ → ユーザー登録、で登録できるはずだけど、何度試しても、「シリアル情報をPCから読み取ることができません」みたいなメッセージが表示されてしまう。もしかして Windows10 x64 22H2 では動かない…?

原因判明。ユーザー登録時の注意事項の中に、管理者権限で実行すること、と記述されていた。.exe を右クリックして「管理者として実行」を選んで起動してからユーザー登録をしてみたらすんなり登録できた。

余談。価格について :

Metasequoia 4 は Metasequoia 3 と比べて値段が上がってしまって購入を諦めた記憶があったのだけど、改めて調べてみたら Metasequoia 3 は 5,000円、Metasequoia 4 Standard版も5,400円でそんなに違いはなかった…。

_metaseq.net - Metasequoia - 購入方法(ユーザー登録) (WebArchive, 2013/03/25)

ただ、EX版は1万円以上していたので(当時は19,980円。一時期は20,350円になってたらしい)、おそらく自分はソレと比較して高いと思い込んでいたっぽい。

_metaseq.net - Metasequoia - ライセンス購入 (WebArchive, 2014/07/04)

2024/09/14() [n年前の日記]

#1 [cg_tools] Metasequoia 4をもう少しだけ試用

3DCGモデリングソフト Metasequoia 4 Standard 4.9.0a 32bit版をせっかくインストールしたので、まだ試用中。

マグカップの作り方 :

blenderでマグカップを作ると2分ぐらいで作れたけれど、Metasequoia 4 で作ったら30分かかってしまって、それはさすがにどうなのと思えてきた。何度も作り直して機能を把握しようと努めたところ、Metasequoia 4 でも2分ぐらいで作れるようになった。

手順をメモしておかないと忘れそうなので一応メモ。
  1. 基本部分を作成。基本図形 → 筒を作成。円柱じゃなくて、筒。横方向の分割数を12に。縦方向の分割数を5に。
  2. 作業をしやすくするため、全体を回転。筒形状を全選択してある状態で、回転 → Y軸 → 15度。これで側面の面の法線がX軸と一致して作業しやすくなる。
  3. 取っ手部分を作る。側面の2ヶ所の面を選んで、押出を2〜3回繰り返して、二本の棒が横に突き出ているような形に延ばす。
  4. 延ばした二本の棒の先端の上下を繋いで「コ」の字の形にする。棒の先端の面を選んで、Deleteキーで面を削除。穴を二つ作る。穴埋め → ブリッジを選んで、二つの穴を順に左クリックすると、穴を繋ぐように面が張られて上下が繋がる。
  5. 筒の底面を塞ぐ。底面の内側の辺を、選択 → 連続辺、で選択して、Deleteキーで削除。穴埋め → 穴埋め、で、内側の底部分と、外側の底部分を左クリックして穴を埋める。
  6. 全体的に滑らかな見た目にする。オブジェクトの設定で、曲面制御 → OpenSubdiv を選択。分割数を 4 か 8 に。

穴と穴を繋ぐようにポリゴンを張ってくれる、穴埋め → ブリッジが便利だなと感じた。

回転体で作る方法も試したのだけど、曲面制御を有効にすると妙な形になってしまう。何故。ちなみに、線(直線)で開いた形状を作って、オブジェクトの設定で回転体を有効にすれば回転体は作れる…のかな。

面の差し込み :

筒ではなく円柱から作る方法も試したけれど、上面と底面を小さくしつつポリゴンを増やす方法が分からない…。blender なら「面の差し込み」でできるのだけど…。

_【Blender】面を差し込む方法 | Blenderの易しい使い方

もしかして Metasequoia の場合、押出 → ベベル → 角度 0.0 → 面をドラッグ、でいいのかな? この操作でも似た感じの結果が得られたように見えた。

ただ、上面や底面を多角形ポリゴン1枚にしておかないと、押出 → ベベルで、面の差し込みっぽいことができない気がする。三角ポリゴン群がぐるりと円状に配置されてる形では、思ったような形にならない。

2024/09/15() [n年前の日記]

#1 [cg_tools] Metasequoia 4をまだもう少しだけ試用

3DCGモデリングソフト Metasequoia 4 Standard 4.9.0a 32bit版をせっかくインストールしたので、まだもうちょっと試用中。せめてどんな機能があるか把握しておきたいので。

環境は、Windows10 x64 22H2 + Metasequoia 4.9.0a 32bit。

多角形ポリゴンと三角形四角形ポリゴンとの変換 :

Metasequoia 3.x までは三角形ポリゴンと四角形ポリゴンしか扱えなかったけれど、Metasequoia 4 は多角形ポリゴンを扱えるようになったらしい。

ただ、多角形と三角/四角形ポリゴンの変換操作が分からなくて調べてた。おそらく以下の操作で変換できるのかな。たぶん。
  • 三角形/四角形ポリゴン群 → 多角形ポリゴンに : 選択部処理 → 隣り合う選択面を合成
  • 多角形ポリゴン → 三角形ポリゴン群に : 選択部処理 → 面を三角形化
  • 三角形ポリゴン群 → 四角形ポリゴン群に : 選択部処理 → 隣り合う三角形面を四角形面化

しかし、完全に問題無く変換できるわけではない模様。例えば三角形 → 四角形を試したところ、見た目では明らかに四角形にできそうな場所でも三角形がそのまま残ってしまった。このあたり何か制限があるのかもしれない。角度とか。

blenderの面の差し込みと同じことをしたい :

昨日もメモしておいたけど、こちらにもメモ。

  1. ポリゴンを多角形ポリゴンにしておく。
  2. 押出 → ベベル → 角度 0.0。
  3. この状態で面を選択してドラッグすれば、面の差し込みと似た処理ができる。

材質設定の割り当て :

材質を設定する方法が分からなくて少しハマった。調べてみたら以下のような感じらしい。
  • 面と、そこに割り当てたい材質設定をクリックして選択しておいてから、選択部処理 → 面に現在の材質を指定。
  • もしくは、材質コマンド → 指定面のみ、を選んでから、設定したい面をクリックしていく。現在選択されている材質設定で、面の材質が指定されていく。

円の中に円を作りたい :

円の中に円を作りたい。下の画像で言えば、左の状態から右の状態にしたい。

metaseq_tuto_ss01.png


どういう操作をしたら実現できるのか調べてた。忘れそうなので手順をメモ。もっと上手い方法があるのかもしれないけれど。

円部分を全部選択する。選択 → 通常にして、Shift + 左ボタンドラッグで、複数の面を選択できる。

metaseq_tuto_ss02.png


多角形ポリゴンにする。選択部処理 → 隣り合う選択面を合成。

metaseq_tuto_ss03.png


円部分が多角形ポリゴンになった。

metaseq_tuto_ss04.png


多角形ポリゴンになれば、円の中に円を作れる。押出 → ベベル → 角度 0.0。

metaseq_tuto_ss05.png


多角形ポリゴン上で、マウスの左ボタンドラッグをすれば、blenderの「面の差し込み」のようなことができる。

metaseq_tuto_ss06.png


もう一つ円を作った。

metaseq_tuto_ss07.png


真ん中の多角形ポリゴンを、Deleteキーを叩いて削除。穴ができる。

metaseq_tuto_ss08.png


穴埋めをする。穴埋め → 穴埋め → 中心に頂点を配置。

metaseq_tuto_ss09.png


穴にマウスカーソルを合わせると、線が黄色で表示される。この状態ならその穴を埋めることができると分かる。

metaseq_tuto_ss10.png


左ボタンクリックすれば、穴埋めができる。

metaseq_tuto_ss11.png

余談。選択ツールの動作が気になる :

余談だけど、選択ツール(選択コマンド?)の動作というか、分類が気になる…。3種類に分かれているけれど、1つか2つで済むのではないか…。選択ツールを選んだ際、クリックで選択、ドラッグで矩形選択もしくは投げ縄選択、という仕様にもできそうな気もする。実はショートカットキーでそういうことができたりしないのかな。

と思っていたけど、試してみたらドラッグで矩形選択できた。投げ縄選択だけが仲間外れ扱いなのだな…。ちなみに blender は、左クリックで通常選択、左ドラッグで矩形選択、Ctrl+右ドラッグで投げ縄選択になるので、選択ツールは一つで済んでる。

移動、拡大、回転も、一つで済ませられそう。3種類の操作のうち1つを選んで利用できるハンドル表示ってあるよな…。でもまあ、その3つについては操作パネル(移動拡大回転を軸別でかけられるパネル)を使えばいいのかな。

3種類の操作が一つのハンドルにまとまってる系は、オブジェクトの上に描画される視覚情報が多くなるから、使いづらい面も…。初心者にとっても何が何やら分からなくて混乱するだろうし。このコマンドはコレしかできないと決めてしまうほうが分かりやすくなる。でも、作業効率は落ちる。

初心者にとって分かりやすいUIは、作業効率はえてして悪いし、作業効率が高いUIは初心者お断りになりがち。なかなか難しい。

2024/09/16(月) [n年前の日記]

#1 [windows] ショートカットファイルのリンク先をまとめて変更したい

Windows10 x64 22H2上で、バックアップしてあったショートカットファイル群をコピーしてきたのだけど、リンク先のドライブ指定が古いままでそのままでは使えなかった。C:\ を D:\ にしたい…。

一々プロパティを開いて、手作業で修正してしまったのだけど、ちょっとこれは面倒臭いなと思えてきた。まとめて変更できるツールは無いのだろうか。

ググってみたら、そういうツールもあると知った。

_ショートカットファイルのリンク先を一括変更「Shortcut Target Changer」 - 今日のお気に入り - 窓の杜
_Cool Morning Soft
_Shortcut Director

ShortcutTargetChanger_300.zip や shcutdir100.lzh を入手して解凍。Windows10 x64 22H2上で任意の場所に置いて実行したみたところ起動してくれた。次回、こういう状況になったら利用してみよう…。

2024/09/17(火) [n年前の日記]

#1 [python] Pythonでwavファイルをループ再生したい

Windows10 x64 22H2 + Python 3.10.10 64bt を使って、wavファイルをループ再生したい。tkinterを使ってウインドウ表示して、ボタンを押したら、winsound を使って再生開始/停止をしたい。

経緯 :

自分はPCに、オーディオセレクタ SONY SB-A40 を繋いで、複数のヘッドフォンをその時々で切り替えて使っているのだけど。どうもここ最近接触が悪くて、うっかりすると左側 or 右側の音が鳴ってなかったりする。

ちゃんと左右の音が出ているのか、それっぽいwavファイルをbatファイル経由で鳴らして確認していたけれど、これだとループ再生させたり、途中で強制停止させることができない。

wavファイルをループ再生させつつ、ボタンをクリックしたら停止/再生ができる何かが欲しいなと思えてきた。いやまあ、探せばシンプルな再生アプリが見つかりそうだけど…。

AIに作ってもらった :

生成AIの Microsoft Copilot に、そういう処理をするPythonスクリプトを作ってもらった。

最初の生成結果はスレッドを使ってループ再生するスクリプトだったのだけど、ウインドウを閉じてもずっとループ再生してダメダメだった。そこで、「スレッドを使うな」だの「winsound.SND_LOOPを使え」だの何度も修正指示を出しみたところ、それらしいスクリプトにしてくれた。

_speakertestpy.pyw
wavfile = "speakertest.wav"

import tkinter as tk
from tkinter import filedialog
import winsound

class LoopPlayer:
    def __init__(self, root):
        self.root = root
        self.root.title("Speaker Test")
        self.root.geometry("270x130")
        self.is_playing = False
        self.file_path = wavfile

        self.play_button = tk.Button(root, text="Play", command=self.toggle_play)
        self.play_button.pack(pady=20, ipadx=40, ipady=8)

        self.file_label = tk.Label(root, text=self.file_path)
        self.file_label.pack()

        self.select_button = tk.Button(root, text="Select WAV", command=self.select_file)
        self.select_button.pack()

        self.toggle_play()
        self.root.bind("<Return>", (lambda event: self.toggle_play()))
        self.root.bind("<KeyPress-space>", (lambda event: self.toggle_play()))

    def select_file(self):
        self.file_path = filedialog.askopenfilename(filetypes=[("WAV files", "*.wav")])
        if self.file_path:
            self.file_label.config(text=self.file_path.split("/")[-1])

    def toggle_play(self):
        self.is_playing = not self.is_playing
        if self.is_playing:
            self.play_button.config(text="Stop")
            winsound.PlaySound(self.file_path, winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_LOOP)
        else:
            self.play_button.config(text="Play")
            winsound.PlaySound(None, winsound.SND_FILENAME)

if __name__ == "__main__":
    root = tk.Tk()
    app = LoopPlayer(root)
    root.mainloop()

speakertestpy_pyw_ss01.png

これでいいんじゃないかな…。winsound を使っているから、Windows上でしか動かないけれど…。

_winsound --- Windows 用の音声再生インターフェース - Python 3.10.15 ドキュメント

使っている wavファイルは以下。たしか MUSIC MAKERを使って自作したwavファイルだったような気がするので CC0/Public Domain ってことで。

_speakertest.wav

余談。Google gemini にも作ってもらったけれど、そちらのほうがサンプルスクリプトらしい分かりやすいコードを出してきた。クラスを無理矢理作ったりしないし、各行にコメント文を逐一入れて解説してくれた。生成AIと言っても、生成結果が結構違うのだな…。

batファイルで鳴らすやり方 :

一応メモ。今までは以下のbatファイルで鳴らしてた。再生が終わると Y/N を尋ねてきて、y なら再度再生、n なら終了する。

_speakertest_play.bat
@echo off
chcp 65001
:REPLAY
setlocal enabledelayedexpansion
set WAVFILE=D:\home\Music\speakertest\speakertest.wav
echo Play %WAVFILE%
PowerShell -c "(New-Object Media.SoundPlayer %WAVFILE%).PlaySync();"
endlocal
set /p yn_check="Retry ? (y/N): "
IF %yn_check:Y=Y%==Y goto REPLAY
IF %yn_check:N=N%==N goto END
:END

batファイルと言いつつ途中で PowerShell を呼び出してwavファイルを再生してるあたりが…。「だったら最初から PowerShellスクリプトで書けばいいじゃん。何やってんの」と言われそうだけど、PowerShellスクリプトは実行ポリシーを設定しないとそもそも実行できないので、そのあたりで悩んでしまってこうなったような気もする。

_PowerShellの実行ポリシーについて調査(その設定で本当に大丈夫ですか?) #ps1 - Qiita
_PowerShellの実行ポリシー変更 #Windows - Qiita

サウンド設定を呼び出せれば済む話 :

M/B に載ってるサウンド用チップが Realtek Audio なら、設定ダイアログ上に、左右から音が出てるか確認する機能が載っているので、それを使えば済んでしまうのだけど…。どこを辿れば呼び出せるのかよく分からなくて…。

Realtek Audio Console で検索すれば出てくるのかな?

まともなオーディオセレクタが欲しい :

オーディオセレクタ SONY AB-40 は、ステレオミニジャック対応で、4入力/2出力 or 2入力4出力なのだけど。この製品、もう売ってないのだよな…。売ってたとしても、結構なお値段。

代替になるオーディオセレクタが欲しいのだけど、製品ジャンル自体がマイナーなようで、日本メーカはこういう製品をもうどこも作ってない。中国製品の中から探すしか…。

2024/09/18(水) [n年前の日記]

#1 [dtm] 音声合成ソフトVOICEVOXを試用

スピーカーのテストをするための音声データを作りたくなったけれど、自分の声で「Left」「Center」「Right」と吹き込むのはなんか嫌だなと思えてきて、音声合成ソフトを使ってみたくなった。

ググってみたら、VOICEVOXという音声合成ソフトが無料で利用できるらしいと知った。

_VOICEVOX | 無料のテキスト読み上げ・歌声合成ソフトウェア
_VOICEVOX Nemo

特に VOICEVOX Nemo のほうは、何かしらで使った際に「VOICEVOX Nemo」とクレジットを入れておくだけでいいらしい。
Nemo の音声ライブラリを用いて生成した音声は、「VOICEVOX Nemo」とクレジットを記載すれば、商用・非商用で利用可能です。

VOICEVOX Nemo より


_Nemo 利用規約 | VOICEVOX

Windows10 x64 22H2上でインストールして試用してみることにした。

インストール :

VOICEVOX.Web.Setup.0.20.0.exe を入手して実行。ネットから1.xGBの何かをダウンロードした後、インストール作業が始まる。今回は、現ユーザのみ使用を選んで、D:\Prog\VOICEVOX\ にインストールしてみた。

起動すると、キャラクターの声を選ぶ画面になる。が、設定 → オプション → マルチエンジン機能、を有効にする。ここで一旦終了。

VOICEVOX Nemo のファイル、voicevox_engine-windows-directml-0.20.0.vvpp を入手して、ダブルクリック。警告が出るけどそのまま続行。これで VOICEVOX Nemo のエンジンが、VOICEVOX に追加された。

全部で1.79GBほどストレージ容量を使う模様。

使ってみた感想 :

比較的それらしく喋ってくれて感心してしまった。ビミョーにイントネーションが怪しいところはあるけれど、そのあたりは指示し直して使うことになるのだろう…。

出力されるwavは、モノラル/24KHzらしい。

#2 [python] edge-ttsを試用

英語に対応した音声合成ソフトを使いたいとググっていたら、PythonからMicrosoft Edge経由で音声合成(TTS)を呼び出せる、edge-tts なるモジュールがあると知った。

_Pythonで音声合成 〜edge-ttsを利用して英語の音声ファイルを作成〜 | 東陽テクニカ | “はかる"技術で未来を創る | ワン・テクノロジーズ・カンパニー
_UbuntuやRaspberry Piでも利用可能な音声合成エンジン、Edge-TTSの導入方法 - uepon日々の備忘録
_[Pythonプログラミング]最新のAI音声合成ライブラリEdgeTTSを試してみる : 乙Py先生のプログラミング教室

気になったので試用してみることにした。環境は Windows10 x64 22H2 + Python 3.10.10 64bit。

インストール :

pip でインストール。
pip install edge-tts

色々なモジュールがインストールされた…。
> pip install edge-tts
Collecting edge-tts
  Downloading edge_tts-6.1.12-py3-none-any.whl.metadata (4.0 kB)
Collecting aiohttp>=3.8.0 (from edge-tts)
  Downloading aiohttp-3.10.5-cp310-cp310-win_amd64.whl.metadata (7.8 kB)
Collecting certifi>=2023.11.17 (from edge-tts)
  Downloading certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB)
Collecting aiohappyeyeballs>=2.3.0 (from aiohttp>=3.8.0->edge-tts)
  Downloading aiohappyeyeballs-2.4.0-py3-none-any.whl.metadata (5.9 kB)
Collecting aiosignal>=1.1.2 (from aiohttp>=3.8.0->edge-tts)
  Using cached aiosignal-1.3.1-py3-none-any.whl.metadata (4.0 kB)
Collecting attrs>=17.3.0 (from aiohttp>=3.8.0->edge-tts)
  Downloading attrs-24.2.0-py3-none-any.whl.metadata (11 kB)
Collecting frozenlist>=1.1.1 (from aiohttp>=3.8.0->edge-tts)
  Using cached frozenlist-1.4.1-cp310-cp310-win_amd64.whl.metadata (12 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp>=3.8.0->edge-tts)
  Downloading multidict-6.1.0-cp310-cp310-win_amd64.whl.metadata (5.1 kB)
Collecting yarl<2.0,>=1.0 (from aiohttp>=3.8.0->edge-tts)
  Downloading yarl-1.11.1-cp310-cp310-win_amd64.whl.metadata (49 kB)
Collecting async-timeout<5.0,>=4.0 (from aiohttp>=3.8.0->edge-tts)
  Using cached async_timeout-4.0.3-py3-none-any.whl.metadata (4.2 kB)
Requirement already satisfied: typing-extensions>=4.1.0 in d:\python\python310-64\lib\site-packages (from multidict<7.0,>=4.5->aiohttp>=3.8.0->edge-tts) (4.5.0)
Requirement already satisfied: idna>=2.0 in d:\python\python310-64\lib\site-packages (from yarl<2.0,>=1.0->aiohttp>=3.8.0->edge-tts) (3.4)
Downloading edge_tts-6.1.12-py3-none-any.whl (29 kB)
Downloading aiohttp-3.10.5-cp310-cp310-win_amd64.whl (379 kB)
Downloading certifi-2024.8.30-py3-none-any.whl (167 kB)
Downloading aiohappyeyeballs-2.4.0-py3-none-any.whl (12 kB)
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Using cached async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Downloading attrs-24.2.0-py3-none-any.whl (63 kB)
Using cached frozenlist-1.4.1-cp310-cp310-win_amd64.whl (50 kB)
Downloading multidict-6.1.0-cp310-cp310-win_amd64.whl (28 kB)
Downloading yarl-1.11.1-cp310-cp310-win_amd64.whl (110 kB)
Installing collected packages: multidict, frozenlist, certifi, attrs, async-timeout, aiohappyeyeballs, yarl, aiosignal, aiohttp, edge-tts
  Attempting uninstall: certifi
    Found existing installation: certifi 2022.12.7
    Uninstalling certifi-2022.12.7:
      Successfully uninstalled certifi-2022.12.7
Successfully installed aiohappyeyeballs-2.4.0 aiohttp-3.10.5 aiosignal-1.3.1 async-timeout-4.0.3 attrs-24.2.0 certifi-2024.8.30 edge-tts-6.1.12 frozenlist-1.4.1 multidict-6.1.0 yarl-1.11.1

動作確認 :

edge-tts というコマンドと、edge-playback というコマンドが入るらしい。
> which edge-tts
"D:\Python\Python310-64\Scripts\edge-tts.exe"

> which edge-playback
"D:\Python\Python310-64\Scripts\edge-playback.exe"

edge-tts は、音声合成の結果をファイルとして出力する。mp3を出力して動作確認してみる。
edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

edge-tts --text "こんにちは、世界" -v ja-JP-NanamiNeural --write-media jhello.mp3 --write-subtitles jhello.vtt

hello.mp3、jhello.mp3 が保存された。再生してみたら、たしかに「ハローワールド」「こんにちは世界」と喋ってる。


edge-playback は、その場で音声として鳴らしてくれるけれど、mpv という再生ソフトが必要になるらしい。Ubuntu Linux 20.04 LTS上で mpv をインストールして試してみたけれどたしかに音声がその場で鳴った。しかし、Windowsではどうすればいいんだろう…?

Windows版のmpvもあるらしい。mpv-x86_64-20240918-git-22620af.7z を入手して、解凍して、任意のディレクトリに置いて、環境変数PATHに追加してみたら動作してくれた。

_mpv.io
_mpv_rのインストール方法(Windows)|kwks_workshop

音声の種類 :

edge-tts -l または edge-tts --list-voices で、選択できる音声の種類が表示される。めちゃくちゃたくさんあるなと思ったけれど、どうやら言語別で用意されてるようで、実際には男性か女性かぐらいしか選べない感じもする。

日本語に対応しているのは以下だろうか。
Name: ja-JP-KeitaNeural
Gender: Male

Name: ja-JP-NanamiNeural
Gender: Female

英語(en-us)は結構あるな…。男女別で分けると以下のような感じだろうか。
Gender: Female
en-US-AnaNeural
en-US-AriaNeural
en-US-AvaMultilingualNeural
en-US-AvaNeural
en-US-EmmaMultilingualNeural
en-US-EmmaNeural
en-US-JennyNeural
en-US-MichelleNeural

Gender: Male
en-US-AndrewMultilingualNeural
en-US-AndrewNeural
en-US-BrianMultilingualNeural
en-US-BrianNeural
en-US-ChristopherNeural
en-US-EricNeural
en-US-GuyNeural
en-US-RogerNeural
en-US-SteffanNeural

#3 [prog] AIにPythonスクリプトを作成してもらえないか実験

昨日も作業したのだけど、Microsoft Copilot に、Pythonスクリプトを作成してもらえないか試してた。

昨日は何度も修正要求を出して目的のスクリプトに辿り着いたけど、そのあたりをまとめたら以下のプロンプトになった。コレを渡したら、最初からそれらしいスクリプトを生成してくれた。

ちなみに、フツーはEnterを叩くと即座に送信してしまうので改行できないけれど、Shift+Enterで改行できるらしい。あるいは、まとめてコピーして貼り付けるだけでも改行は反映される模様。

以下に示す仕様でPythonスクリプトを作成してください。
・ tkinterとwinsoundを使った、ウインドウサイズが300x140のGUIアプリです。
・ wavファイルをwinsoud.SND_LOOP指定でループ再生します。
・ スレッドは使いません。
・ デフォルトのwavファイル名は「speakertest.wav」です。
・ アプリを起動すると自動でwavが再生されます。
・ ボタンをクリックすると再生を停止してボタン表示が「Play」になります。
・ 再度ボタンをクリックすると再生を開始してボタン表示が「Stop」になります。
・ ウインドウ上にwavファイル名が表示されます。
・ ファイル選択ボタンをクリックするとファイル選択ダイアログが開いてwavファイルを選択できます。
・ Enterキーかスペースキーを押すと再生または停止になります。
・ ESCキーかQキーを押すとアプリが終了します。
・ これらの処理をクラスを使わずに記述します。

生成結果は以下。
import tkinter as tk
from tkinter import filedialog
import winsound

# デフォルトのwavファイル名
wav_file = "speakertest.wav"

# 再生中かどうかのフラグ
is_playing = True


# 再生を開始する関数
def play_sound():
    global is_playing
    winsound.PlaySound(wav_file, winsound.SND_LOOP | winsound.SND_ASYNC)
    button.config(text="Stop")
    is_playing = True


# 再生を停止する関数
def stop_sound():
    global is_playing
    winsound.PlaySound(None, winsound.SND_PURGE)
    button.config(text="Play")
    is_playing = False


# ボタンがクリックされたときの処理
def toggle_sound():
    if is_playing:
        stop_sound()
    else:
        play_sound()


# ファイル選択ダイアログを開く関数
def select_file():
    global wav_file
    file_path = filedialog.askopenfilename(filetypes=[("WAV files", "*.wav")])
    if file_path:
        wav_file = file_path
        label.config(text=wav_file)
        if is_playing:
            play_sound()


# キーが押されたときの処理
def on_key_press(event):
    if event.keysym in ["Return", "space"]:
        toggle_sound()
    elif event.keysym in ["Escape", "q"]:
        root.destroy()


# ウインドウの設定
root = tk.Tk()
root.title("WAV Player")
root.geometry("300x140")

# ラベルの設定
label = tk.Label(root, text=wav_file)
label.pack(pady=10)

# ボタンの設定
button = tk.Button(root, text="Stop", command=toggle_sound)
button.pack(pady=10)

# ファイル選択ボタンの設定
file_button = tk.Button(root, text="Select File", command=select_file)
file_button.pack(pady=10)

# キーイベントのバインド
root.bind("<KeyPress>", on_key_press)

# アプリ起動時に再生を開始
play_sound()

# メインループの開始
root.mainloop()

コメントで何をしてるか解説してくれているし、イイ感じかもしれない。プロンプト次第で生成結果が結構変わるのだな…。

余談。「すげえ。これならもうプログラマー要らねえじゃん」と言い出す人が出てきそうだけど、Python も tkinter も winsound もプログラマーが作ってくれているからこうして呼び出して利用できるわけで…。それに今回の事例に限って言えば、どのモジュール(ライブラリ)を使うのか、どのオプションを使うのか、そこまで逐一指示しないと、音が鳴り続けて止め方すら分からないダメダメなスクリプトを生成してきたので…。

やはり、ある程度分かってる人が ―― プログラムを書ける程度の知識を持ってる人ならコレを使ってちょっと楽ができそうかも、みたいな状況かなと。Copilot = 副操縦士、という名称はなんだか上手い気がする。

2024/09/19(木) [n年前の日記]

#1 [linux][ubuntu][python][dtm] 音声合成ソフトespeakを試用

Linux上で音声合成をして鳴らすことができる、espeak というプログラムがある。Python + pyttsx3 で音声合成する時に呼び出されるのだとか。VMware + Ubuntu Linux 20.04 LTS や、実機上の Ubuntu Linux 22.04 LTS上ででインストールして試用してみた。

インストール :

sudo apt install espeak libespeak-dev

Ubuntu Linux 20.04 LTS の場合、espeak 1.48.04 が、22.04 LTS の場合、espeak 1.48.15 が入った。

libespeak1 というパッケージもインストールされる。pyttsx3 を利用する時は、このパッケージが必要になるらしい。

_Debian -- bookworm の libespeak1 パッケージに関する詳細
_Debian -- パッケージのファイル一覧: libespeak1/bookworm/amd64

espeak はメジャーな言語(英語等)しかサポートしてなくて、日本語はサポートされていない。日本語も利用したい時は、espeak-ng を使うといいらしい。espeak をアンインストールしてから、espeak-ng をインストールしてみた。
sudo apt purge espeak libespeak-dev libespeak1
sudo apt install espeak-ng libespeak-ng-dev libespeak-ng1

Ubuntu Linux 20.04 / 22.04 LTS上では espeak-ng 1.50 が入った。

動作確認 :

使い方は以下。
espeak "Hello world"
or
espeak-ng "Hello world"

機械的な男性の声で、「ハローワールド」と喋ってくれた。

声の種類というか言語の指定は「-v hoge」をつける。また、男女の声を選び分ける時は、言語指定の後に、「+m2」「+f2」等をつける。「+f1」から「+f4」まで指定して、声質が変わることを確認した。

また、「-s xxx」をつけることで、速度が変わる。デフォルトは175、らしい? 一定時間に何語喋るかを指定するそうで、指定した数値が少なければ遅くなり、多ければ早くなる。

espeak, espeak-ng で、英語、かつ、女性の声を指定するなら以下になる。
espeak -v "english-us+f2" -s 150 "hello world"
or
espeak-ng -v "English (America)+f2" -s 150 "hello world"

espeak と espeak-ng で、言語指定時の文字列が違っているのがちょっと面倒かもしれない。

一応、選択できる言語の種類を出力してみた。

_voices_espeak.txt
_voices_espeak-ng.txt

pyttsx3から利用 :

Python + pyttsx3 で利用してみる。VMware + Ubuntu Linux 20.04 LTS上で動作確認した。

ユーザのホームフォルダに pyttsx3 をインストール。
python3 -m pip install pyttsx3

利用できるボイス種類の一覧は、以下で表示できる。
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
    print(f"Voice: {voice.name}")

動作確認用スクリプト。
import pyttsx3
import time

engine = pyttsx3.init()

# engine.setProperty("voice", "english-us+f2")
engine.setProperty("voice", "English (America)+f2")

engine.setProperty("rate", 200)

engine.say("hello world. Speaker test. Left, center, right.")
engine.runAndWait()

time.sleep(2)

ただ、VMware + Ubuntu Linux 20.04 LTS 上では、音声再生が途中で打ち切られてしまった…。実機なら正常に動作するのだろうか?

実機(Ubuntu Linux 22.04 LTS, Python 3.10.12, pyttsx3 2.97) でもダメだった。やはり音声再生が途中で打ち切られてしまう…。

espeak-ng を単独で呼び出した場合は最後まで再生されるのだけど、pyttsx3 経由だと音声が最後まで流れてくれない。

espeak-ng を使ってるのがマズいのかと、espeak をインストールし直してみたけれど、改善しなかった。

Windows10 x64 22H2 + Python 3.10.10 64bit + pyttsx3 2.97 なら、最後まで再生される。ちなみに Windows10 x64 22H2上で動かすと、Windowsにインストールされてる音声合成エンジン(SAPI5)を使ってくれるらしい。

余談。python3-espeakパッケージ :

Ubuntu Linux (or Debian Linux) では、Python3 から espeak を呼び出せる、python3-espeak というパッケージも用意されているらしい。こちらを使ったら、また違う動作になるのだろうか…?

_Debian -- bookworm の python3-espeak パッケージに関する詳細

余談その2。Python 2.7の場合 :

Windows10 x64 22H2 + Python 2.7の場合、pyttsx3 2.6 をインストールしたら動いてくれた。

_pyttsx3 - PyPI
pip install pyttsx3==2.6

参考ページ :

2024/09/20追記 :

pyttsx3 が正常に動作しない原因が分かった。pyttsx3 2.97 のバグっぽい。

  • espeak-ng ではなく、espeak をインストール。
  • pyttsx3 をアンインストールして pyttsx3 2.88, 2.91, 2.95 をインストール。
この状態で動作確認してみたら、ちゃんと最後まで音声が鳴ってくれた。

sudo apt purge espeak-ng libespeak*
sudo apt install espeak libespeak-dev
python -m pip uninstall pyttsx3
python -m pip install pyttsx3=2.95

あるいは、espeak-ng をそのまま使うこともできるらしい。libespeak-ng.so.1 を libespeak.so.1 としてリンクを張ればいい模様。
sudo apt install espeak-ng libespeak-ng-dev libespeak-ng1
cd /usr/lib/x86_64-linux-gnu
ln -s libespeak-ng.so.1 libespeak.so.1

2024/09/20(金) [n年前の日記]

#1 [python][dtm] pyttsx3を試用

pyttsx3は、Pythonを使って音声合成を出力するモジュール(ライブラリ)。
気になったので少し試用してみた。動作確認環境は以下。

インストール :

Windows + Python 3.x なら、以下でインストールできる。
pip install pyttsx3
or 
python -m pip install pyttsx3

Linux上では注意が必要。現行バージョンは 2.97 だけど、Linux上では pyttsx3 2.97 はバグっていて、音声が途中で途切れてしまう。pyttsx3 2.95 まで戻したら正常に動作した。
python -m pip uninstall pyttsex3
python -m pip install pyttsx3==2.95

Python 2.7.x上で使う場合も注意が必要。2024/09/19の時点では、Python 2.7.18 32bit上で pyttsx3 を使いたい場合、pyttsx3 2.6 をインストールしないと使えなかった。

_pyttsx3 2.6 : Python Package Index

python -m pip install pyttsx3==2.6

espeakについて :

Linux の場合 espeak を使って音声合成するが、espeak は日本語をサポートしていない。espeak-ng なら日本語をサポートしているのでそちらを使うのも手。ただし、libespeak-ng.so.1 を libespeak.so.1 として使えるようにリンクを張らないといけない。
sudo apt install espeak-ng libespeak-ng-dev libespeak-ng1
cd /usr/lib/x86_64-linux-gnu
ln -s libespeak-ng.so.1 libespeak.so.1

espeakとedge-ttsの音声サンプル :

せっかくだから espeak (espeak-ng) と edge-tts の音声サンプルを載せておく。

Ubuntu Linux 22.04 LTS + espeak-ng 1.50 の出力サンプル。
espeak-ng "Hello world. Sally sells seashells by the seashore." -v "English (America)+f3" -s 150 -w espeak_ng_hello.wav


espeak_ng_hello.ogg


Windows10 x64 22H2 + edge-tts 6.1.12 の出力サンプル。
edge-tts -t "Hello world. Sally sells seashells by the seashore." -v en-US-AriaNeural --write-subtitles edge_tts_hello.vtt --write-media edge_tts_hello.mp3


edge_tts_hello.ogg


espeak はフォルマント音声合成方式のせいか、なんだか機械的な声と言うか…。

#2 [windows] Windows10の音声合成データの追加

日本語版 Windows10 x64 22H2上では、音声合成用のデータとして最初から以下の2つが入ってるように見えるのだけど。
TTS_MS_JA-JP_HARUKA_11.0
TTS_MS_EN-US_ZIRA_11.0

「ナレーター」の設定画面から音声データを追加できるらしい。
  1. Ctrl + Win + N キーを押すと、ナレーターの画面が開く。
  2. ナレーターの声をカスタマイズする、のすぐ下に、音声を追加する、という項目があるのでクリック。
  3. 音声認識の設定画面が開くので、音声の管理 → 音声の追加、をクリック。

「英語(アイルランド)」「英語(オーストラリア)」「英語(カナダ)」「英語(英国)」などを追加してみた。この状態にすると、選べる音声データが増えた。
TTS_MS_JA-JP_HARUKA_11.0
TTS_MS_EN-US_DAVID_11.0
TTS_MS_EN-US_ZIRA_11.0
TTS_MS_EN-GB_HAZEL_11.0

2024/09/21() [n年前の日記]

#1 [dtm] Mary TTSについて調べてる

音声合成ツールについて調べているうちに、Mary TTS というツールがあることを知った。

_MaryTTS - Introduction
_marytts/marytts: MARY TTS -- an open-source, multilingual text-to-speech synthesis system written in pure java
_英語テキスト朗読ツールMaryTTS | AIお助けボックス

気になったので試用してみようと思ったのだけど、インストール方法からして分からない…。もうちょっと調べてみないと…。

ダメだった事例 :

以下の動画を参考にしながら作業。Windows10 x64 22H2 + Java 1.8.0_421上で実験。

_Install Open Mary TTS in Windows - YouTube

以下のページから marytts-5.2.zip を取得して解凍。任意のフォルダに置いた。

_MaryTTS - Download

音声データらしきものを取得。以下の .xml に zip ファイルのURLが書いてあるので、一つずつDLしていった。

_marytts/download/marytts-components.xml at master - marytts/marytts

ただ、github.com に置いてある zip は入手できるけど、mary.dfki.de のURLは404になっていて、そこに置いてあったらしい zip は入手できない…。

とりあえず、DLできたzipだけでも解凍。中には lib/*.jar があるので、marytts-5.2.zip を解凍してできたフォルダ内の lib/ の中にコピー。

これで、bin/marytts-server.bat を実行してサーバを起動しておいてから、bin/marytts-client.bat を実行すれば動くはずなのだけど。marytts-client.bat を実行した段階で、サーバ側もクライアント側も両方エラーを出して終了してしまう。

当時は Java 8 で動かしていたらしい。Java が新し過ぎると動かないのだろうか?

2024/09/22() [n年前の日記]

#1 [dtm][python] Coqui-TTSを試用

Coqui-TTS という音声合成ライブラリがあるらしい。ディープラーニングで作られたTTS(Text to Speech)なのだとか。元々は Mozilla TTS というプロジェクトだったそうで。

_coqui-ai/TTS: a deep learning toolkit for Text-to-Speech, battle-tested in research and production
_TTS - PyPI
_coqui-tts - PyPI

Pythonのモジュールとしてインストールできるらしいのだけど、TTS と coqui-tts の2つがあるようで…。どっちがどう違うのか、よく分からない…。

Ubuntu Linux 22.04 LTS上でインストールして試用してみた。とりあえず今回は TTS のほうを試用してみる。

ハードウェアは、CPU : Intel i3-6100T、GPU : 内蔵GPU、RAM : 8GB。Python バージョンは 3.10.12。
$ python --version
Python 3.10.12

インストール :

python -m pip install TTS

TTS 0.22.0 の他に、色々なモジュールが山ほど入った。仮想環境を作って試したほうが良かったかもしれない…。

使い方 :

Pythonモジュールではあるけれど、tts というコマンドラインツールも入っているので、それを使って動作確認。
tts --text "Hello world" --out_path speech.wav

実行すると、自動で足りないモデルデータをダウンロードしてから音声を生成してくれた。モデルデータは以下の場所に保存されるらしい。
/home/(USERNAME)/.local/share/tts/

以下の2つのファイルが入った。113MB と 3.8MBのファイルサイズだった。
tts_models--en--ljspeech--tacotron2-DDC
vocoder_models--en--ljspeech--hifigan_v2

さておき。22050Hz、モノラルの音声が得られた。

印象 :

espeak (espeak-ng) や festival と比べると、かなり滑らかでイイ感じの音声に聞こえた。

ただ、生成には数十秒(30秒ほど)かかった。おそらく、Intel製内蔵GPUしか持ってない環境だからCPUで生成しているのだろうけど…。espeak や festival はすぐに音声が聞こえたけれど、それらと比べると結構な時間がかかる。品質と時間のトレードオフだろうか。

GPUを使えばもうちょっと速く生成できたりするのかな…?

ところで、渡すテキストによっては、途中で「ホニャララウンジャラウニャウニャ」的な謎の音声が含まれて出力されるようで…。どういう条件なら出現するのか、ちょっとよく分からない…。

Windows10上でもインストール :

Windows10 x64 22H2上でもインストールしてみた。ハードウェア環境は、CPU : AMD Ryzen 5 5600X、RAM : 16GB、GPU : NVIDIA GeForce FTX 1060 6GB。Python は 3.10.10。

今回は、X:\aiwork\coqui-tts\ というディレクトリを作って、その中にPythonの仮想環境を coquitts という名前で作って作業してみた。
cd X:\aiwork\coqui-tts
python -m venv coquitts
.\coquitts\Scripts\activate

Ubuntu Linuxと同様に TTS をインストール。
python -m pip install TTS

> which TTS
"X:\aiwork\coqui-tts\coquitts\Scripts\tts.exe"

全体的に 6.34GB ほどのファイル群がインストールされた。

動作確認。
tts --text "Hello world. Sally sells seashells by the seashore." --out_path helloworld.wav

Ubuntu Linux上と同じように生成できた。モデルデータも、自動でダウンロードしてから処理をしてくれる。モデルデータは以下にダウンロードされる模様。
C:\Users\(USERNAME)\AppData\Local\tts\

ただ、GPU (CUDA) を使おうとして --use_cuda true をつけてみるとエラーが出る。
 tts --text "Speaker test. Left. Center. Right." --out_path speakertest.wav --use_cuda true
AssertionError: Torch not compiled with CUDA enabled

以下で解決策が紹介されてた。

_pipでPyTorchインストール時に「Torch not compiled with CUDA enabled」エラー - Qiita

ただ、この操作をしてみても、自分の環境では相変わらずエラーが出たので、上記で紹介されていた、以下のページの作業を試してみた。

_Previous PyTorch Versions | PyTorch

自分の環境は、CUDA 11.8 をインストール済みなので、以下を打った。
python -m pip uninstall torch
python -m pip cache purge
python -m pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu118

この状態なら、--use_cuda true をつけても処理ができるようになった。

GPUを使った場合、生成時間がかなり短くなってくれた。短文では違いが分からないけれど、長文を渡すと圧倒的に生成時間が短い。数十秒かかっていたのが、数秒で終わる印象。

サンプル音声 :

一応サンプル音声も載せてみる。

tts --text "Hello world. Sally sells seashells by the seashore." --out_path helloworld.wav --use_cuda true


helloworld.ogg


以下のファイルは、波形編集ソフト(SoundEngine Free 5.23_2)で、ステレオ化、サンプリング周波数を22050Hzから44100Hzに変更している。
tts --text "Speaker test. Left. Center. Right." --out_path speakertest.wav --use_cuda true


speakertest.ogg


tts --text "Examine data link. Main trans engine. Number 1 2 ON. Number 3 4 OFF. Number 5 6 7 8 ON. Confirmed, round vernirn. Hello, I am VIFAM. Okay VIFAM. your number is 7. instrument recorder on. Permission to sortie. Permission granted. GOOD LUCK, VIFAM 7." --out_path vifam.wav --use_cuda true


vifam.ogg


先日載せた音声サンプルも比較のために再掲しておく。

Ubuntu Linux 22.04 LTS + espeak-ng 1.50 の出力サンプル。
espeak-ng "Hello world. Sally sells seashells by the seashore." -v "English (America)+f3" -s 150 -w espeak_ng_hello.wav


espeak_ng_hello.ogg


Windows10 x64 22H2 + edge-tts 6.1.12 の出力サンプル。
edge-tts -t "Hello world. Sally sells seashells by the seashore." -v en-US-AriaNeural --write-subtitles edge_tts_hello.vtt --write-media edge_tts_hello.mp3


edge_tts_hello.ogg

2024/09/23(月) [n年前の日記]

#1 [linux][ubuntu] Linux機の/homeを別パーティションに引っ越し

数日前に、Ubuntu Linux 22.04 LTSをインストールしてあるサブPC(Intel i3-6100T機)の /home を別パーティションに引っ越ししたのだけど、作業手順をメモするのを忘れていたような気がするのでメモ。

元々、HDDの1パーティション(500GB程度)を /home に割り当てていたけれど、更に容量の大きいHDDのパーティション(3TB)に割り当てることにした。そのためには /home の中身を別パーティションに丸々コピーしないといけない。

ハードウェア構成は以下。
以下を参考にして作業。

_Ubuntuで使用中のhomeディレクトリを別パーティションに移動する (LiveUSBなど不要) - kamocyc’s blog

作業手順のメモ :

新 /home 用パーティションをマウントするためのディレクトリを作成。
sudo mkdir /media/home

マウント設定ファイル /etc/fstab を修正。今回は micro editor を使ったけれど、nano でも vim でも何でもいい。
sudo micro /etc/fstab

以下を追記。自分の環境はパーティションにラベルをつけてあるので、ラベルで指定。つけてない場合は、UUIDを調べて記述することになる。
LABEL=HOME3TB /media/homeold ext4 errors=remount-ro  0 2

/etc/fstab の内容に基づいてマウントする。
sudo mount -a

/home の中身を、/media/home にコピーする。rsync を使う。参考記事では `-aXS` を指定してたけど、今どのファイルをコピーしているのか分かるようにしておきたかったので、`-v` も追加しておいた。
sudo rsync -vaXS /home/. /media/home/.

今まで使ってた /home用パーティションを割り当てるためのディレクトリを作成。
sudo mkdir /media/homeold

/etc/fstab の内容を以下に変更。今まで使ってた HOMEOLD パーティションは /media/homeold に割り当てて、新しいパーティション HOME3TB を /home にする。
LABEL=ROOT      /               ext4    errors=remount-ro  0       1
LABEL=HOMEOLD   /media/homeold  ext4    defaults           0       2
LABEL=HOME3TB   /home           ext4    defaults           0       2
LABEL=SWAP      none            swap    sw                 0       0

OS再起動。
sudo reboot

今回はすんなり引っ越しすることができた。

#2 [windows][dtm] espeak-ngをWindows10上でもインストールしてみた

Windows10 x64 22H2上で、音声合成ツール espeak-ng 1.51 をインストールしてみた。

_Releases - espeak-ng/espeak-ng

espeak-ng-X64.msi を入手して実行するとインストーラが起動する。

どこかの段階でインストール先を尋ねてくるかなと期待したけど、問答無用で、C:\Program Files\eSpeak NG\ にインストールされた…。環境変数PATHも書き換えられて、件のフォルダパスが追加されている。

espeak-ng.exe にパスが通っているので、DOS窓を開いていきなり espeak-ng "hello world" と打てば音声が鳴る。ただ、再生された音声にはブツブツとノイズが入ってる感じがした。wav だか mp3 でファイル保存すれば違うのだろうか?

音質的に優れているわけでもないし、インストール場所も気に入らないので、アンインストールすることにした。ただ、アンインストール前に、インストールされた場所のファイル群を別の場所にコピーしておいた。

アンインストール後、別の場所にコピーしておいた espeak-ng.exe を実行してみたら、/usr/share/ 以下の何かのファイルが見つからないと言ってきてエラー表示になった。そこはLinux上で動かした際にアクセスするディレクトリ場所だよな…。Windows版を動かしてるはずなのに、何故…。

どうやら、インストーラでインストールする際に、Windows版が参照するべき場所を何かしら(レジストリ?)で指定してる気配がする。もしくは C:\Program Files\eSpeak NG\ 以下にデータが必ずあるはずだと決め打ちで処理しているか…。何にせよ、ファイル群を任意の場所に展開して実行すればそのまま動く作りではないらしい。

まあ、Linux上で動かせば使えるから、あえて Windows上で使わなくてもいいか…。

以上、23 日分です。

過去ログ表示

Prev - 2024/09 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project