我是在 Mac 上使用 ZSH 的新手,正在寻求帮助来编写一个简单的 shell 脚本来从 .csv 文件批量创建 WAV 音频文件
我创建了一个 .csv 文件,其中包含 3 列数据,AB C。想要让文本转语音读取每一行并将该行写入 .WAV 文件
一个样本是:
文件夹“文本转换”
.csv 文件“HelloSounds.csv”
A, B, C
Hello, my name is, Fred
Hello, your name is, Anne
Hello, is your name, Charles
不确定如何选择声音或命名文件以反映其内容。
如有任何帮助,我们将不胜感激,谢谢。
答案1
使用以下input
文件,
% < input
A, B, C
Hello, my name is, Fred
Hello, your name is, Anne
Hello, is your name, Charles
我们可以使用为每一行输入awk
运行say
命令,假设最后一列是语音名称,并且应该说出整行。 unix 上的文件名中的空格很糟糕,因此需要花费一些功夫来用下划线替换它们。
% < input awk '/Hello/{file=$0;gsub(" ","_",file);system("say -v " $NF " -o " file ".wav " $0)}'
Opening output file failed: fmt?
Voice `Anne' not found.
Voice `Charles' not found.
但是,say
显然,我的系统不喜欢“*.wav”文件类型。所以也许你可以创建 AIFF:
% < input awk '/Hello/{file=$0;gsub(" ","_",file);system("say -v " $NF " -o " file " " $0)}'
Voice `Anne' not found.
Voice `Charles' not found.
% file Hello,_my_name_is,_Fred.aiff
Hello,_my_name_is,_Fred.aiff: IFF data, AIFF-C compressed audio
% afplay Hello,_my_name_is,_Fred.aiff
然后用类似的程序将 AIFF 转换为 WAV ffmpeg
?