#录制 #声音 #个人信息管理 #音频设备 #akasha

app akasha

无头录制应用程序,设计为无限期运行并自动将麦克风流分割成段,以便于处理。支持WAV和OGG格式。

7个版本 (稳定版)

1.2.4 2023年2月25日
1.2.3 2023年2月23日
1.2.2 2023年1月11日
0.1.0 2023年1月5日

#284 in 音频

每月30次下载

AGPL-3.0-or-later

37KB
760

Akasha

.github/workflows/rust.yml crates.io

Akasha是一个无头录制应用程序,设计为将录制分割成多个段,以便更容易管理。

它设计为低资源消耗,因此可以作为后台进程使用,例如录制会议,无需保持OBS运行,或编写涉及soxffmpeg的笨拙的shell实用程序。

理论上支持所有主要平台(尽管我没有费心在非Linux平台上测试它,我已经尽力只使用平台无关的库)。

它支持自动检测输入设备,手动通过名称指定设备,并具有相当直观的命令行。要开始,大多数时候,你可以这样做

akasha rec --path-dir ~/MyAudioDirectory/

其中 --path-dir 是它将文件写入的目录。

如果你没有指定 --path-dir,例如

akasha rec

...它将默认为 ~/Audio/akasha/,其中 ~ 是你的家目录。

任何不存在的目录都将自动创建。

如果它检测到的默认音频设备不正确,你可以覆盖它。首先,获取所有可用输入设备的列表

> akasha probe --type input-devices
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_dsnoop.c:566:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm_dsnoop.c:566:(snd_pcm_dsnoop_open) unable to open slave
[
    "jack",
    "pipewire",
    "pulse",
    "default",
    "sysdefault:CARD=Generic",
    "front:CARD=Generic,DEV=0",
    "surround40:CARD=Generic,DEV=0",
    "surround51:CARD=Generic,DEV=0",
    "surround71:CARD=Generic,DEV=0",
] 

你将不得不原谅ALSA的呕吐——原因似乎是 CPAL没有正确设置错误处理器。也许我会提交一个PR并在某个时候修复它。

无论如何,你现在可以从该特定设备获取音频

akasha rec --device "pulse" --path-dir ~/Audio 

还有一个可爱实时显示音量大小的功能,它使用通过RMS的SIMD音频音量计算。如果你想那样,可以传递 --display 标志。

待办事项

  • 如果f32流全是零,添加警告,这样用户就不必启用 --display 模式来告诉。
  • 使用snafu重构错误处理逻辑。
  • 更好的错误消息
  • 最终可能将所有流逻辑重构到 audio-stream crate 中。
  • 默认录制路径,以便让新手更容易使用。
  • 可能修复原始模式与日志功能不兼容的问题(/n -> /r/n)。
  • 修复原始模式下跟踪回溯不工作的问题(https://werat.dev/blog/pretty-rust-backtraces-in-raw-terminal-mode/

依赖项

~13–46MB
~731K SLoC