2017年9月20日水曜日

排他的にサウンドデバイスを使う::カンタンな設定の準備

WindowsでいうところのWASAPIみたいなDAC利用方法/ALSA・排他的


ともだちに説明するのがめんどくさいので、こういうスクリプトを書けばいいのかなと思って用意してみました。

WindowsでいうところのWASAPIに近いLinuxでのサウンド・ソースの使い方といってもいいのがこの設定ではないかと思います。換言すればサウンド資源独り占めモードですね。WASAPI/ASIOと違いアプリケーションの音量コントロールなどに制限がありません。

わりと簡便でオトクだと決めました。困っている場合は、騙されたとおもって一度どうぞ。


まとめるとUSB-DACなどでノイズ、プチ等が気になる場合は

  1. まず、この排他利用 をしてみる。
  2. それでもだめなら低遅延カーネルを導入する。
  3. それでもだめなら、jackを導入する。

という3段階で考えるといいと思います。その次はドライバが悪いか、デバイスが悪いということであきらめましょう。カーネルそのものを変えてみたり、ディストロ自体を最新にしてみるなど。というのは、ALSAやPulseの設定は散々やりましたが上で述べた1-2-3を試すのが楽であるというのが私の結論だからです。2年ぐらい無駄にした。笑) CPUが速ければ問題なくなるのかもしれませんね。セレロン並だから。

ついでにいうと効果がまったくなかったのは、アプリの優先度を最優先にするです。これはうまくなかった。W10を起動すると問題ないのでLinuxの中の問題なのでしょうね。私の守備範囲を超えています。




新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
#

どれを選んだらいいのかわからないとかアプリ毎の選択インターフェイスがめんどくさいという人のために。これでいいかと思います。


#次のコマンドを発行してhwではじまる行を適宜貼り付けます。黄色をそのままコピーしてターミナルで実行します。
aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; print if /without any/ '

以下のような出力が得られます。眺めてもたいして楽しくないので、さくっと青あたるところに注目しましょう。

hw:CARD=Generic,DEV=0
    HD-Audio Generic, ALC892 Analog
    Direct hardware device without any conversions
hw:CARD=Generic,DEV=1
    HD-Audio Generic, ALC892 Digital
    Direct hardware device without any conversions
hw:CARD=series,DEV=0
    EHP-AHR192 series, USB Audio
    Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=0
    HA90USB, USB Audio
    Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=1
    HA90USB, USB Audio #1
    Direct hardware device without any conversions

コマンド時点、上から順に。
  • 背面ミニジャック
  • S/PDIF 光出力
  • エレコムのandroid用USB-DAC
  • オーディオテクニカのUSB-DAC analog
  • オーディオテクニカのUSB-DAC#1 S/PDIF 
 ハードウェア的にはどれも (192k/24bit)です。HDMI/Display Portのサウンドのみ殺してあります。

USB-DACの設定であると決まっている場合は次でよいです。
aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; print if /without any/ and /USB Audio/'

#現在小生が排他的に設定しているアプリ
mpv ちょっとややこしい。
audacious
deadbeef
#アプリ別設定方法 未稿
#mpvの場合

exclusive
#

2017年9月15日金曜日

エレコム ハイレゾDACをLinuxで使う

USB-DACをLinuxで使う、パーフェクトマニュアル

嘘つき!! 挿すだけで使えるのだから、パーフェクトも何もあったもんじゃないです。とはいえ、だめなのはありました。これで自分では4つ目のUSB-DACです。

今回導入してみたのは、エレコム http://www.elecom.co.jp/ さんの写真と本体です。ハイレゾDACをDesktopLinuxで使います。もちろんノートPCでもいいでしょう。

1.本体 1100円ぐらい(定価の5%ぐらいで投げ売り中)
2.USB変換アダプター 150-300円ぐらい(PCとこれを接続)が必要。
3.基本スマホ用でandroidならそのまま使います。
4.予算に余裕があれば、ハイレゾ対応ヘッドフォン/イヤホンをゲット
5.(4万キロヘルツなんて聴こえへんのやからどうでもええやん)
6.どうやら相性問題が大量発生しているのかもしれません。それが安価な理由。
7.ちゃんと動けば音質は良いです。ただしバッテリ消費が激しいのでPC用途が美味しいです。

メモ::

Class2.0 対応の恩恵ですね。そこだけみるとMAC OSでも、W10の2017年春以降のCreatersUpdateがああたっていれば動くはずと推定できます。

追記::ふつうにW10で動作しました。パーフェクト。

事前の学習(趣味なのでこの節飛ばしていいです)

 新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
もともと
cat /proc/asound/modules
では、snd_hda_intel
#
HDMI disable手順を踏んでリブートし、かつUSB DACを電源onすると

cat /proc/asound/modules

1 snd_usb_audio


という具合に、USB DACが自動認識されます。他のデバイスはありません(ダミー出力状態)。

USBに挿します。使います。


#アダプタ経由でPCの端子に、USB-DACを挿し込む
cat /proc/asound/modules
 0 snd_hda_intel
 1 snd_usb_audio

勝ち!!

#認識されて音が出ている状態
cat /proc/asound/cards
 0 [Generic        ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xfeb00000 irq 16
 1 [series         ]: USB-Audio - EHP-AHR192 series
                      ELECOM CO., LTD. EHP-AHR192
series at usb-0000:05:00.0-1.3, high speed

https://poor-user.blogspot.jp/search?q=sinks
192k/24bit ハイレゾを再生する。 ビットレートが確認できる。

pactl list short sinks
0    alsa_output.pci-0000_00_14.2.analog-surround-51    module-alsa-card.c    s32le 6ch 192000Hz    SUSPENDED
1    alsa_output.usb-ELECOM_CO.__LTD._EHP-AHR192_series-01.analog-stereo    module-alsa-card.c    s24le 2ch 192000Hz    RUNNING

ここで音が割れていないか、ノイズがはいらないかなどを確認します。
そこまでいってパーフェクト。
#


2017年9月11日月曜日

gnu grep のススメ、Perl互換オプションのススメ::あえて2017年に叫ぶ

gnu grep が使える環境なら、素直にgnu grep を使おう


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

#PCRE(Perl正規表現互換オプション)

grep -P '検索文字列'

エクスペリメンタルな位置づけも終わっていますので安心です。サブセットかと思っていたら、(否定|肯定)(先読み|後読み)も使えますよ。グッドです。

gnu grepが使えない環境では、pcre2grep/pcregrep がありますが、あんまり使いませんね。

おおむね、grepの -Pオプション(大文字です。小文字にしても怒られるだけなのですぐに気が付きます)でだいじょうぶ。

私の場合、ほとんど日本語処理目的なのですが自分の用途では困ったことがないですね。

#Perlのワンライナーの一例

perl -ne "print if /検索文字列/" ファイル

grepの色分け機能などを実装するのはたいへんですから、素直にGNU Grepがよいです。


MACはGNU grepではないらしいので、pcregrep/pcre2grepが良いのではないでしょうか。
私はカジュアルなLinux使いなので、深いことは気にしません。笑) pcre2grepで統一してもいいかもしれません。

方針としては、できるだけ簡素に、学習することなく、空気のように端末を扱うです(努力だけはしたくない)。だから、正規表現はPerl互換の正規表現だけが原則です。プロの方は瞬時に脳みそ切替しながら使うのかもしれませんけれど。

#perl 5 互換の正規表現を利用する grep ユーティリティ pcregrepをいれたい場合。ubuntu/mint

導入する
sudo apt install pcregrep

削除する
sudo apt purge pcregrep
...

きょう現在、当方にはいっているgrep

pcre2grep --version
pcre2grep version 10.21 2016-01-12

pcregrep --version
pcregrep version 8.38 2015-11-23

zpcregrep --version
zgrep (gzip) 1.6
Copyright (C) 2010-2013 Free Software Foundation, Inc.


grep --version
grep (GNU grep) 2.25

Copyright (C) 2016 Free Software Foundation, Inc.



#複数行にわたるgrepの例::Perlのワンライナーのほうが楽だよねといわれそうだけど。

perlのワンライナーのほうが楽だけど、grepでもちょろいので知っていて損はないという例。

こういうファイル。9行。
cat -n delete.txt
     1 会いたい
     2 藍Ⅰ姶
     3 藍とと藍
     4 藍藍
     5 藍藍青
     6 群青
     7 藍藍
     8 藍と
     9 藍マイ。


マッチした範囲に色。色がなければ無能。
$ grep -Pz  '愛.*(\n|.)*終' delete.txt
会いたい
藍Ⅰ姶
藍と愛と藍
藍藍
藍藍青
群青
藍藍
藍と終
藍マイ。

※zオプションで行単位処理でなくなり、 
(\n|.)で改行またはなんかの1文字にマッチさせる。
perlでいえば、セパレータ変えての/smオプションってことですね。


範囲切り出し::オススメなo オプション、有能
$ grep -Pzo  '愛.*(\n|.)*終' delete.txt
愛と藍
藍藍
藍藍青
群青
藍藍
藍と終

含まれている行を表示
$ pcre2grep -M  '愛.*(\n|.)*終' delete.txt 
藍と愛と藍
藍藍
藍藍青
群青
藍藍
藍と終と

$ pcregrep -M  '愛.*(\n|.)*終' delete.txt 
藍と愛と藍
藍藍
藍藍青
群青
藍藍
藍と終と

マニュアルで詳細は確認してください。

pcre2grepの動作をperlでやるとすれば、範囲を抜き出すかんじ。

perl -nle  'print if /愛/ ... /終/' delete.txt


PCRE2grepとPCREgrepの違い


前者が新しい10系列以降になります。後者はメンテされていますが8系列です。ubuntu標準では8系列です。自分がどうやってpcre2grepをいれているのかは思い出せません。コンパイルしたのでしょうね。

PCREプロジェクトはケンブリッジ大学発祥のようです。
Cf. http://www.pcre.org PCRE - Perl Compatible Regular Expressions

2017年9月9日土曜日

tesseract-ocr OCR on Ubuntu/Linux Mint

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

1行または3行でインストール完了です。

tesseract-ocr 最新をいれてみる場合、4系列α版

#gitに追随 安定版ではありません。 ただし訓練辞書などが最新です。
sudo add-apt-repository ppa:alex-p/tesseract-ocr
sudo apt update

#導入してみる。メンテナーバージョンなら、ここから。上の2行は通常スルーしてください。

sudo apt install tesseract-ocr tesseract-ocr-jpn

日本語と英語対応版として導入されます。

tesseract-ocr 使ってみる。

日英混在。オライリー本のスキャンでテスト
tesseract 画像.jpg 333 -l eng+jpn
#表示してみる。わりといいかんじ。
cat 333.txt

当方の印象としては、3.04 よりは4.0がデフォルトでかなり認識が良いです。日本語訓練辞書も新しいです。GUIが必要な場合は、このテッサラクト(テッセラクト)をエンジンにするフロントエンドがふたつはあったような。インストールを除けばMACでも同じことですね。

⚠ライブラリなどファイル配置がことなるためLinuxとMACではそこに注意。

当方ではだいじなものはここにインストールされました。MACは違うと思う(たぶん)。
/usr/share/tesseract-ocr/4.00/tessdata/

2017年9月6日水曜日

VirtualBox for Linux インストール

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T


#16.04 /mint 18 の場合
以下のファイルに1行書き足す。
sudo gedit /etc/apt/sources.list

deb http://download.virtualbox.org/virtualbox/debian xenial contrib

bash


wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install virtualbox-5.1 
 

2017年9月2日土曜日

Python2用ではなく、Python3のIDLEを導入する

ubuntu16.04.*


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
 sudo apt install idle3
#起動 3が必要。
idle3

#以上です。たぶんこれでいいと思います。