macos say批量将文本转换为语音

say是一个将文本转换为语音的工具,可以结合脚本批量的将文字转换为语音。

1、say参数用法

man say
say [-v voice] [-r rate] [-o outfile [audio format options] | -n name:port | -a device] [-f file | string ...]

OPTIONS
	string #指定要转换的文字
	
	-f file, --input-file=file 
		#指定需要转换的文件,需要将待转换的文本写入文件中。
		#say -f text.txt
		
	-v voice, --voice=voice 
		#指定要使用的声音,默认是在“系统偏好设置-辅助-语音”中选择的语音。
		#查看所有声音列表 say --voice='?'
		#如使用婷婷语音 say -v Ting-Ting 北京欢迎您
		
	-r rate, --rate=rate
		#使用的语音速率,以每分钟字数为单位。
		#例 say -f text.txt -r 30
	
	-o out.aiff, --output-file=file 
		#将转换后的语音输出到文件,-o 指定文件的路径
		#输出的文件若没有指定格式,则默认为AIFF格式的
		
	-n name, --network-send=name
    -n name:port, --network-send=name:port
    -n :port, --network-send=:port
    -n :, --network-send=:
		#指定用于通过AUNetSend重定向语音输出的服务名称(默认为“AUNetSend”)和/或IP端口。
	
	-a ID, --audio-device=ID
    -a name, --audio-device=name
    	#通过ID或名称前缀指定要用于播放音频的音频设备。
		#获取所有设备列表 say --audio-device='?'
		
	--progress
	#在合成过程中显示进度表。
	
AUDIO FORMATS
	#从MacOS X 10.6开始,可以指定AIFF以外的文件格式,尽管并非所有第三方合成器最初都可以支持它们。
	#在简单的情况下,可以从扩展名推断出文件格式,尽管通常需要以下某些选项才能实现更精细的控制:
	--file-format=format
		#要写入的文件格式(AIFF,caff,m4af,WAVE)。
		#通常,为输出文件指定合适的文件扩展名会更容易。
		#查看所有支持的格式 say --file-format='?'

	--data-format=format
		#要存储的音频数据的格式。
		#say -o hi.wav --data-format=alaw 北京欢迎您
		

	--channels=channels
		#通道数。由于大多数语音合成器仅产生单声道音频,因此通常用途有限。

	--bit-rate=rate
		#AAC等格式的比特率。
		#要获取有效比特率的列表,请指定“?” 作为速率。
		#实际上,并非所有这些比特率都可用于给定格式。

	--quality=quality
		#音频转换器的质量级别介于0(最低)和127(最高)之间。
		
例子
	say Hello, World
    say -v Alex -o hi -f hello_world.txt
    say --interactive=/green spending each day the color of the leaves
    say -o hi.aac 'Hello, [[slnc 200]] World'
    say -o hi.m4a --data-format=alac Hello, World.
    say -o hi.caf --data-format=LEF32@8000 Hello, World

    say -v '?'
    say --file-format='?'
    say --file-format=caff --data-format='?'
    say -o hi.m4a --bit-rate='?'
    say -o hi.wav --data-format=alaw 北京欢迎您

2、批量转换脚本

#!/bin/bash
# 将text.txt文件中的文字,逐行转换为语音,保存到voice目录中
# 命令示例 say -o hi.wav --data-format=alaw 北京欢迎您

text=text.txt
voice_folder=voice

[ ! -f $text ] && { echo "file $text does not exist"; exit 1; }

[ ! -d $voice_folder ] && { echo "folder $voice_folder does not exist"; exit 1; }

while read i
do
    say -o ${voice_folder}/${i}.wav --data-format=alaw $i
done < $text
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值