Audacityがバックグラウンドで実行されている間に音声を録音したい。別のウィンドウに集中しているからです。グローバルキーボードショートカットを使用して記録の開始と停止を制御することは可能ですか?
残念ながら、man audacity
を調べても、興味深いオプションや関連するオプションは表示されません。
OPTIONS
-help display a brief list of command line options
-version display the audacity version number
-test run self diagnostics tests (only present in development
builds)
-blocksize nnn
set the audacity block size for writing files to disk to nnn
bytes
cliからAudacityを一時停止/継続することは、記録の一時停止/継続とまったく同じように動作します
kill -stop <pid>
およびkill -cont <pid>
コマンドを使用して、プロセスとしてAudacityを一時停止することをテストしました。それは完璧に仕事をしました。すぐに記録を停止し、プロセスが続行されるとすぐに再開しました。 6〜7時間後でも、これらのコマンドを使用してすぐに記録を停止/再開します。
2つのコマンドをショートカットキーに追加すると、説明したとおりに正確に実行されます。
次の2つのコマンドをショートカットキーに追加します。
/bin/bash -c "kill -stop $(pgrep audacity)"
...記録を停止(一時停止)する
/bin/bash -c "kill -cont $(pgrep audacity)"
...再開するには、記録を開始/停止(実際には一時停止)するための独自のショートカットキーが必要です。
Audacity GUIを介して行う必要があるのは、記録の初期startingのみです。
システム設定>「キーボード」>「ショートカット」>「カスタムショートカット」を選択します。 「+」をクリックして、上記の2つのコマンドを2つの異なるショートカットキーに追加します。
もちろん、オプションを拡張できます。
/bin/bash -c "kill -cont $(pgrep audacity) && notify-send Recording"
そして
/bin/bash -c "kill -stop $(pgrep audacity) && notify-send Stopped"
...現在の状態に関する通知を表示するか、現在の状態を表示するパネルアイコンを作成します。何でも可能です
以下のスクリプトは記録を切り替えます。ショートカットキーに追加するか、他の方法で起動します。
スクリプトは、ファイル/proc/<pid>/status
から現在のプロセス状態を読み取り、ターゲット状態を決定します。
さらに、スクリプトはユーザーに通知で何が起こるかを通知します(notify-send
を使用)。
#!/usr/bin/env python3
import subprocess
try:
pid = subprocess.check_output(["pgrep", "audacity"]).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
else:
state = "(stopped)" in open("/proc/"+pid+"/status").read()
if state == True:
cmd = ["kill", "-cont", pid]; msg = "Recording"
else:
cmd = ["kill", "-stop", pid]; msg = "Pausing"
subprocess.Popen(cmd)
subprocess.Popen(["notify-send", msg])
toggle_record.py
として保存します次のコマンドでテスト実行します:
python3 /path/to/toggle_record.py
すべてが正常に機能する場合は、回答で前に説明したように、ショートカットキーに追加します。
理論的には、はい、 スクリプトモジュール があり、これは明らかにPerlスクリプト言語で使用できますが、現時点では作成されていないので、Perlスキルの可能性があります開発者が作成します。
しかし、現状では、あなたの質問に対する答えは「いいえ」です。
オープンソースコミュニティの素晴らしいところは、常に代替手段があることです。この場合、arecord
、コマンドラインから機能します。以下に表示されているのは、私が作成した非常に簡単なスクリプトで、キーボードショートカットにバインドすることを目的としています。使い方は簡単です。キーの組み合わせを押す-録音が開始され、もう一度押すと録音が停止します。
このスクリプトで「ハードコード化」されているのは、デフォルトのwav
タイプの記録と~/Music/records
フォルダーです。ユーザーは、独自のオプション/ファイルタイプ/場所などを使用したいので、このスクリプトを自由に編集できます。追加のオプションについては、arecord
manページを参照してください。
最終的には、このスクリプトをPythonで書き直すことで、ユーザーのディレクトリをよりきめ細かく制御し、コマンドラインオプションなどを追加できるようにする予定です。今のところ、これは仕事の75%を行う必要があります。
以下に、スクリプトのソースコードを示します。これは、私の GitHubリポジトリ でも利用できます。スクリプトを作成および使用するための標準ルールが適用されます。実行可能権限があり、~/bin
フォルダーに保存されていることを確認してください
#!/bin/bash
# Author: Serg Kolo
# Date: Dec 1, 2016
# Purpose: simple script for recording audio with arecord
# Written for: https://askubuntu.com/q/855893/295286
record_audio()
{
# Set up some variables to control arecord here
# Please remember to quote the variables
# and pay attention to slashes in file paths
filetype="wav"
filename="record_$(date +%H_%M_%m_%d_%Y)"
directory="$HOME/Music/recordings/"
if ! [ -d "$directory" ];
then
mkdir "$directory"
fi
# This part will initiate recording of timestamped
# please see arecord's man page for other options
notify-send "Recording started"
exec arecord -t "$filetype" "$directory""$filename"."$filetype"
}
main()
{
if pgrep -f "arecord" ;
then
pkill -f "arecord" && notify-send "Recording stopped"
else
record_audio
fi
}
main "$@"
はい。 a script、xdotool、wmctrlおよびbuntuのホットキーの組み合わせを使用できます。
最初にファイルを作成して記録ウィンドウを選択し、コマンドキーをそのウィンドウに送信します。
次に、ホットキーを割り当ててスクリプトをアクティブにします。
#!/bin/bash
# Specify the Window running your recording by running
# "./hkrecord.sh getwindowid" from the command line.
# Alternatively you can edit the ~/recordfile and place your own string. This
# first line of the fie will be used
# Ensure you have the following "xdotool" and "wmctrl" installed.
recordfile="$HOME/recordfile"
getwindowid(){
windowid=$(wmctrl -lp | awk '{$2=$3=$4=":"; print $0}'| awk -F: \
'{print $1"\n"$4}' | zenity --list --column="No" --height=800 --width=1000 \
--column="Select your choice" \
--text="Text above column(s)" --hide-column=1 --title="My menu" 2>/dev/null)
[[ "$windowid" ]] && sed -i "1i @$windowid" $recordfile || \
echo "No Window selected"
exit
}
if [ ! $# -eq 0 ]; then
if [[ "x$1" == *"get"* ]]; then
echo "Getting the window id"
getwindowid
exit
fi
fi
recordwindow="$(head -n1 $recordfile)"
if [ "$(echo $recordwindow | egrep '@0x')" ]; then
windowid=$(echo $recordwindow | sed "s/\@//")
else
windowid=$(echo $(wmctrl -lp|egrep -i $recordwindow)|head -n1|\
awk '{print $1}')
echo "$windowid|$recordfwindow" # debug line... can be commented out.
fi
echo "Using WindowID: $windowid" # debug line... can be commented out.
if [ -z $windowid ]; then
espeak "Can't locate specified window!"
espeak "Exiting..."
exit
fi
xdotool key --window $windowid p
/usr/local/bin/hkrecord.sh
などの便利な領域にスクリプトを保存します
最初に、簡単なテストとしてコマンドラインからスクリプトを実行します。次に、グローバルキーボードショートカットを割り当てます。ウィンドウを指定するには(1回だけ必要)実行します:
$ ./hkrecord.sh getwindow
引数なしでhkrecord.sh
を実行すると、記録が制御されます。
System Settings
-> keyboard
に移動し、カスタムキーボードショートカットを追加します。フォアグラウンドプログラムと競合しないホットキーを選択します。私が使う Shift+Ctrl+P。
これは、カスタムショートカットの構成です。
名前:ホットキーレコード コマンド:/usr/local/bin/hkrecord.sh
スクリプトファイルにコメントとして指示を配置しました。
追加の利点として、同じグローバルホットキーを再生の一時停止に使用できます。私はこのシステムをディクタフォンとして使用して、録音したメモから書き込みます。
わかりやすくカスタマイズしやすいように、スクリプトを非常にシンプルにしようとしました。完全にテストされ、シームレスに動作します。
注:don_crisstiおよびGeorge_Vasiliouに感謝します( https://unix.stackexchange.com/a/328548/81664 )レコードウィンドウ。