Google Chromeの英語文字起こし機能を試す

Google Chromeにリアルタイム文字起こし機能がやってきたようです.

オフラインで文字起こしするとのことでサーバとやり取りしないのはいいですね.
手元の環境では20日に試すと未だ使えませんでしたが,21日に試すと使えるようになっていました.この間Google Chrome自体のアップデートは行われていません.
ChromiumやBrave Browserには対応していないのか現在のところ現れません.最近の感じからするとChromeのみの対応なのかもしれません.

機能を有効にするには設定が必要です.

chromecaption setting

「setting」→「Accessibility」→「Caption」→「Live Caption」をOnにします.すると音声認識ファイルのダウンロードが始まるのでしばらく待ちます.
ダウンロード完了後,適当な英語の動画やオーディオを再生すると字幕が付きます.

chromecaption youtube

これはYoutubeを再生しているところです.上の動画内の字幕はYoutubeの自動文字起こしのもので,下側のがGoogle Chromeの字幕です.ミュートにしても問題なく文字起こしは動作します.

chromecaption local

更に,念の為回線を接続していない状態でローカルの動画やオーディオを再生するとこれもちゃんと文字起こしされました :)
日本語のソースを再生するとそれっぽいところを英語で文字起こししようと頑張っています.キャプションのウィンドウの☓を押して消すとCPU利用率が下がりました.

あとはこの文字起こしされたテキストを保存したり日本語翻訳できると便利なのですが,このテキストはコピーできないようです.Google翻訳でWeb翻訳を試みてもこの部分のテキストは翻訳されないようでした.残念.
拡張機能でこのあたりを実現できるものが出てこないかなと思っています.

現在は英語のみの対応ですが,他の言語にも対応してほしいですね.

環境
$ google-chrome --version
Google Chrome 89.0.4389.90
$ dpkg-query -W google-chrome-stable
google-chrome-stable    89.0.4389.90-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

Google Chrome/Chromium/Braveの履歴のタイムスタンプ形式を調べて1日分の履歴を手に入れる

たまに以前ウェブで見た情報が欲しくなることがあります.履歴に残っていればいいけど消えてしまっているかも.ウェブブラウザのアクセス履歴のタイトルとURLだけでもテキストファイルに残しておくと便利かもしれません.

履歴はHistoryファイルをsqlite3で叩くと取れるのですが,タイムスタンプがよくあるUNIX timeでもなくとても大きな値です.

$ sqlite3 ~/.config/chromium/Default/History "SELECT \"[\" || group_concat(json_object('timestamp', last_visit_time, title, url)) || \"]\" FROM urls;" | jq . | grep timestamp | sort
 -n | tail -1
    "timestamp": 13256542361632384,
UNIX timeの例
$ date +%s
1612703645

検索するとこのようなページを見つけました.

This timestamp format is used in web browsers such as Apple Safari (WebKit), Google Chrome and Opera (Chromium/Blink). It’s a 64-bit value for microseconds since Jan 1, 1601 00:00 UTC. One microsecond is one-millionth of a second.

このTimestampはUTC 1601-01-01からのマイクロセカンド秒らしいです.試してみます.

まずはUNIX timeの1601-01-01からの秒数に10^6を掛けてUNIX timeとの差を求めます.(GNU coreutilsのdateって1970-01-01より前の時間も計算できるんだ!)

UTC 1601-01-01のUNIX time?に10^6
$ echo "$( date --utc --date 1601-01-01 +%s ) * 10^6" | bc
-11644473600000000

Chrome時間とUNIX timeの差を引いてUNIX timeに変換します.

$ echo "( 13256542361632384 -11644473600000000 ) / 1000000" | bc
1612068761

UNIX timeを人間が読めるように変換

$ date --date="@1612068761"
Sun 31 Jan 2021 01:52:41 PM JST

1行にまとめる

$ date --date="@`echo "(13256542361632384/10^6-11644473600)"|bc`"
Sun 31 Jan 2021 01:52:41 PM JST

逆に今の時間をChromeのtimestampに変換

$ echo "(`date +%s`+11644473600)*10^6" | bc
13257218080000000

1日前のChrome時間

$ echo "(`date -d '1day ago' +%s`+11644473600)*10^6" | bc
13257336413000000

chrometime

ということで1日分Chrome/ChromiumのHistoryはこんな感じで取得できそうです.

$ sqlite3 /tmp/History "SELECT \"[\" || group_concat(json_object('timestamp', last_visit_time, title, url)) || \"]\" FROM urls WHERE last_visit_time >= $(((`date -d '1 day ago' +%s` +11644473600)*1000000));"
Note
該当プロファイルを利用中の場合このようなエラーになります.
Error: database is locked
ブラウザを終了するか,Historyファイルを適当な場所にコピーしてそちらを使います.
$ cp /home/matoken/.config/google-chrome/Default/History /tmp/

History ファイルは既定値ではこの辺にあります.

Chromium
~/.config/chromium/Default/History
Google Chrome
~/.config/google-chrome/Default/History
Brave Brouser
/.config/BraveSoftware/Brave-Browser/Default/History

既定値以外の場合はこんな感じで検索? ~/.config 以外にもできるけどその場合はパスがわかっていると思います.

$ find ~/.config/chromium/ ~/.config/google-chrome/ ~/.config/BraveSoftware/Brave-Browser -name History -print

Operaは買収されてから使っていないのですが,古いプロファイルを見るとこの辺のようです.現在は変わっている可能性があります.

Opera
~/.config/opera/History

Safariは環境がないので未確認ですがArchiveBoxのscriptを見ると既定値は恐らくこのあたりです.

Safari
~/Library/Safari/History.db
環境
$ dpkg-query -W bc google-chrome-stable chromium brave-browser coreutils sqlite3
bc      1.07.1-2+b2
brave-browser   1.19.92
chromium        88.0.4324.146-1
coreutils       8.32-4+b1
google-chrome-stable    88.0.4324.150-1
sqlite3 3.34.1-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

The Great SuspenderでサスペンドしていたURLをjsonで出力する

ということで削除されちゃったんですね.
自分は先月怪しいという話を聞いて削除していました.その時タブが消えてしまい悲しかったのですがこんな感じで復旧させました.
タイムスタンプとタイトル,URLをjsonで出力します.

$ sqlite3 ~/.config/google-chrome/Default/History "SELECT \"[\" || group_concat(json_object('timestamp', last_visit_time, title, url)) || \"]\" FROM urls WHERE url LIKE '%bkeccnjlkjkiokjodocebajanakg%';" | jq . | sed -e 's/chrome-extension:\/\/klbibkeccnjlkjkiokjodocebajanakg\/suspended.html.*&uri=//'

何をやっているかというと, ~/.config/google-chrome/Default/History がGoogle Chromeのsqlite3形式の履歴ファイルなので,この中からThe Great Suspenderのurlの含まれているurlを引っ張り出して整形しています.

Chromiumの場合は ~/.config/chromium/Default/History
Braveは ~/.config/BraveSoftware/Brave-Browser/Default/History でした.

Default以外のprofileは名前いろいろなのでfindとかで探すといいでしょう.

$ find ~/.config/chromium/ ~/.config/google-chrome/ ~/.config/BraveSoftware/Brave-Browser -name History

ここで紹介したのはLinuxでの場合ですが,パスを変えると他のOSでもいけるはずです.

環境1
$ dpkg-query -W jq sqlite3 chromium google-chrome-stable
chromium
google-chrome-stable    69.0.3497.100-1
jq      1.6-2.1ubuntu1
sqlite3 3.34.0-1
$ lsb_release -dr
Description:    Ubuntu Hirsute Hippo (development branch)
Release:        21.04
$ uname -m
x86_64
環境2
$ dpkg-query -W jq sqlite3 chrome brave-browser google-chrome-stable
brave-browser   1.19.90
google-chrome-stable    88.0.4324.146-1
jq      1.6-2.1
sqlite3 3.34.1-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

Google Chrome / Chromium 79でバックグラウンドタブのリソース消費を減らす Tab Freeze を試す

Google Chrome/Chromium の 79 で Tab Freeze という機能が入ったようです.これはバックグラウンドの利用していないタブを停止してリソース消費を抑えるというもののようです.

似たようなもので The Great Suspender という拡張機能があり,タブをつい開きっぱなしにしてしまう私はこれで大分助かっています.(この拡張機能はタブのCPUだけでなくメモリも開放されます.その代わり復帰に時間がかかります.)

今回の Tab Freeze で似たようなことが標準でできるようになっていそうなので試してみました.

この機能は未だ実験的な機能でDisabled になっているので手動で設定変更する必要があります.

設定の前に The Great Suspender は競合しそうなので一旦削除しておきます.(類似のものを入れている場合はやはり消しておいたほうがいいと思う)

設定変更はアドレスバーに chrome://flags/#proactive-tab-freeze と入力してアクセスした項目で設定変更します.

chrome://flags/#proactive-tab-freeze

いくつか選択項目がでてきます.

Tab Freeze Value

Enabled Freeze - Unfreeze 10 seconds every 15 minutes, だと少しするとChromium が落ちてしまいました.
Enabled, Enabled Freeze - No Unfreeze だと落ちないと思ったのですが, Shift + Esc でタスクマネージャを起動すると落ちてしまいました.

てことで手元の環境では未だ不安定で使えないようでした.残念.またバージョンが上がったら試してみようと思います.

この辺の機能はOperaの省電力機能があって気になっているのですが,中国企業の奇虎360(Qihoo)に買収されてから怖いなと…….

環境
$ dpkg-query -W chromium
chromium        79.0.3945.79-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

Google Chrome 76 でまた特定のサブドメインが表示されなくなったので表示するようにする

Google Chrome 69 のときも一時的に表示されなくなっていたのですが,

Google Chrome 76 でまた特定のサブドメインが表示されなくなりました.

例えば, www.matoken.org は matoken.org と省略されます.

20190811 16 08 30 974

ちなみに 69 のときは www.hoge.www.matoken.org が hoge.matoken.org に見えるというバグらしき動きもありましたがこれは hoge.www.matoken.org に見えるようになっていました.

20190811 16 08 11 478

今回も Google Chrome 69 のときと同じように chrome://flags/#omnibox-ui-hide-steady-state-url-trivial-subdomains を Disabled にすると以前の挙動に戻ります.

20190811 16 08 11 3832

今回 Chromium 76 でも試してみましたが,この変更は入っていないようでサブドメインは省略されませんでした.

環境
$ dpkg-query -W google-chrome-stable chromium
chromium        76.0.3809.100-1
google-chrome-stable    76.0.3809.100-1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64

Google Chrome / Chromium で PDFを自動的に開く代わりにダウンロードするようにする

Google Chrome / Chromium で PDF ファイルをクリックすると既定値では組み込み PDFビュワーで開かれます.しかし,情報漏えいが起こるようです.

2019/3/1時点で未修正。
修正されるまでAdobe製のPDFリーダーの利用を推奨。
2019年4月下旬ころ修正の予定と発見者は報告。

ということで暫く治らないようです.自分は JavaScript を基本的に無効にしているので PDFドキュメントは開かれていないように見えますが不安なので無効にする設定を探してみました.

chrome://settings/content/pdfDocuments
にアクセスして「PDF ファイルを Chrome で自動的に開く代わりにダウンロードする」のチェックを On にする.

20190305-22-03-01-12486.jpg

これで次から PDF ファイルへのリンクで自動的にダウンロードされるようになる.

#Okuar の JavaScript 無効化の設定が見当たらない……

環境

$ dpkg-query -W google-chrome-stable chromium
chromium        72.0.3626.121-1
google-chrome-stable    72.0.3626.121-1
$ lsb_release -dr
Description:    Debian GNU/Linux buster/sid
Release:        unstable
$ uname -m
x86_64

Linuxの Google Chrome/Chromium でサインインと同期を無効にする

を見てなるほどと思ったのだけど,macOS, Windows の手順はあるけれどLinux の手順がないなてことで調べてみました.

参考にしたのはこちら.

/etc/opt/chrome, /etc/opt/chromium 以下に json 形式で設定ファイルを設定するだけでした.

Google Chrome の場合

ディレクトリ作成
$ sudo mkdir -p /etc/opt/chrome/policies/managed /etc/opt/chrome/policies/recommended
/etc/opt/chrome/policies/managed/disablesync.json に設定ファイル設置
{
        "SyncDisabled":true,
        "RestrictSigninToPattern":".*@example.com"
}

Chromium の場合

ディレクトリ作成
$ sudo mkdir -p /etc/opt/chromium/policies/managed /etc/opt/chromium/policies/recommended
/etc/opt/chromium/policies/managed/disablesync.json に設定ファイル設置
{
        "SyncDisabled":true,
        "RestrictSigninToPattern":".*@example.com"
}

環境

$ dpkg-query -W google-chrome-stable chromium
chromium        69.0.3497.92-1
google-chrome-stable    69.0.3497.100-1
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

Google Chrome 69 でURLのサブドメインが表示されなくなったのを表示する

<追記>
69.0.3497.92 で修正された

chrome://flags/#omnibox-ui-hide-steady-state-url-scheme-and-subdomains を「Default」に戻してもサブドメインが省略されないのを確認 :)
</追記>

Google Chrome 69 で アドレスバーの表示が変わりました.例えば www.matoken.org で www が見えなくなり,matoken.org と表示されるようになりました.
更に,www.hoge.www.matoken.org は hoge.matoken.org に見えるというおそらくバグであろう挙動も><

42739367390 9acbb565de

Workaround として,chrome://flags/#omnibox-ui-hide-steady-state-url-scheme-and-subdomains を Disabled にすると以前の挙動になります.

30678044578 41d01a41ff

Chromium 69.0.3497.81-3 は既定値で以前と同じ動作のようです.

環境
$ dpkg-query -W google-chrome-stable chromium
chromium        69.0.3497.81-3
google-chrome-stable    69.0.3497.81-1
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

Google Chrome からエクスポートしたパスワードリストを KeepassXC にインポート

人に説明するのに手元で試したのですがせっかくなのでblogに

Google Chrome のパスワードマネージャは使っているけれど,汎用的なKeepassXC に移行なメモです.

Google Chrome からパスワードのエクスポート

「設定」→「パスワードとフォーム」→「パスワードを管理」
若しくは chrome://settings/passwords にアクセス.

「︙」を押して「パスワードをエクスポート」から「パスワードをエクスポート…」から適当な場所にパスワードを保存します.

42595980870 d5446a65ee

30536920508 8d62cb50bd

KeepassXC へのインポート

KeepassXC を起動して,「CSVからインポート」を選びます.

43503758335 aa7e31c143

列のレイアウトを以下のようにしてインポートします.

  • Title : 列1

  • Username : 列3

  • Password : 列4

  • URL : 列2

44404975011 57f063d488

ウェブブラウザへの拡張機能の導入

利用するウェブブラウザに拡張機能を導入する.

KeepassXC の「ツール」→「設定」の「ブラウザー統合」で利用するウェブブラウザを有効にする.

42603172110 1770a7e23f

後はよしなに.

環境
$ dpkg-query -W keepassxc google-chrome-stable
google-chrome-stable    68.0.3440.106-1
keepassxc       2.3.1+dfsg.1-1
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

Google Chromeのproxy切り替え

昨日久々に外出してssh -NでChromeにsocks proxyを設定して使おうとしたのですが以下のようなメッセージが表示されて設定できませんでした.

20160302_20:03:07-5155

恐らく統合デスクトップ環境ではないawesomeを使っているのでこの機能に対応していないんだろうなと.

manの該当部分はこんな感じでpacファイルなども利用できるよう.

       --proxy-server=host:port
              Specify the HTTP/SOCKS4/SOCKS5 proxy server to use for requests.  This overrides any environment variables or settings picked via the options dialog.
              An individual proxy server is specified using the format:
 
                [<proxy-scheme>://]<proxy-host>[:<proxy-port>]
 
              Where <proxy-scheme> is the protocol of the proxy server, and is one of:
 
                "http", "socks", "socks4", "socks5".
 
              If the <proxy-scheme> is omitted, it defaults to "http". Also note that "socks" is equivalent to "socks5".
 
              Examples:
 
                --proxy-server="foopy:99"
                    Use the HTTP proxy "foopy:99" to load all URLs.
 
                --proxy-server="socks://foobar:1080"
                    Use the SOCKS v5 proxy "foobar:1080" to load all URLs.
 
                --proxy-server="socks4://foobar:1080"
                    Use the SOCKS v4 proxy "foobar:1080" to load all URLs.
 
                --proxy-server="socks5://foobar:66"
                    Use the SOCKS v5 proxy "foobar:66" to load all URLs.
 
              It is also possible to specify a separate proxy server for different URL types, by prefixing the proxy server specifier with a URL specifier:
 
              Example:
 
                --proxy-server="https=proxy1:80;http=socks4://baz:1080"
                    Load https://* URLs using the HTTP proxy "proxy1:80". And load http://*
                    URLs using the SOCKS v4 proxy "baz:1080".
 
       --no-proxy-server
              Disables the proxy server.  Overrides any environment variables or settings picked via the options dialog.
 
       --proxy-auto-detect
              Autodetect proxy configuration.  Overrides any environment variables or settings picked via the options dialog.
 
       --proxy-pac-url=URL
              Specify proxy autoconfiguration URL.  Overrides any environment variables or settings picked via the options dialog.

とりあえずは以下のようなオプションで起動することで回避できました.

$ google-chrome --proxy-server="socks://localhost:8080"

この状態で設定を見るとグレーアウトになって設定変更できません.

20160303_07:03:40-2248

ということでこの方法だと切り替えのたびにChromeの起動し直しが必要でタブを大量に開いている時など辛いです.proxy.pacを作りこんだらとも思ったのですがこの感じだと起動時にしか評価し無さそう.

ということでこのようなものを入れてみました.

設定を作っておいてワンタッチで切り替えできるようになりました.
そもそもシステムのプロキシの設定が見えない問題は未解決ですが…….

ちなみにproxyの確認には以下のsiteが便利です.欲しい情報だけ貰うことやxml/json形式でも情報を貰うことが出来ます.

昔は自分のsiteにこんな感じのscript仕込んでましたが最近は色々なサービスが合って便利ですね :)

echo -e 'Content-Type: text/plain\n\n'
echo `printenv`