将 .csv 文件中的文本批量写入语音音频文件

将 .csv 文件中的文本批量写入语音音频文件

我是在 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

相关内容