gpt4 book ai didi

macos - 我可以在 bash 脚本中与 OSX `say` 命令的输出交互吗?

转载 作者:行者123 更新时间:2023-11-29 09:23:24 25 4
gpt4 key购买 nike

我在终端中运行了以下行:

say "hello, this is the computer talking" --interactive

当我运行此命令时,计算机会读出引号中的单词并在读出时突出显示这些单词。我想做的是获取每个口语的时间。例如:

  • 00.00 你好
  • 01.23 这个
  • 01.78 是
  • 02.10
  • 02.70 计算机
  • 03.30 谈话

我想知道是否有任何方法可以编写与该行的输出交互的 bash 脚本。

最佳答案

这是一个几乎完全符合您要求的 Zsh 脚本。

#!/bin/zsh
zmodload zsh/datetime
say --interactive "hello, this is the computer talking" | {
counter=0
while IFS= read -r -d $'\r' line; do
(( counter++ )) || continue # first line in the output of `say --interactive` suppresses the cursor; discard this line
timestamp=$EPOCHREALTIME
(( counter == 2 )) && offset=$timestamp # set the timestamp of the actual first line at the offset
(( timestamp -= offset ))
printf '%05.2f %s\n' $timestamp ${${line%$'\e[m'*}#*$'\e[7m'}
done
}

示例输出:

00.00 hello
00.26 ,
00.52 this
00.65 is
00.78 the
01.36 computer
02.04 talking

如果你想将其转换为 bash,则需要在 bc 等外部命令中完成浮点运算,并且要获得精确的时间戳,你需要 coreutils date (timestamp=$(gdate +%s.%N)).

顺便说一下,如果你不想看到逗号,你可以把它过滤掉。

关于macos - 我可以在 bash 脚本中与 OSX `say` 命令的输出交互吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com