Googleの読み上げ機能を利用して音声ファイルを作る

#!/bin/bash
declare -a ch_a=(
作业:“因为-所以......”两个例文。
因为新干线就要到东京了,所以我收拾起来行李。
因为我上周吃过这家店的干烧名虾,所以目前打算吃东坡肉。
)

output="homework"
fs=24000
dd if=/dev/zero of=temp.raw count=12000 bs=1 > /dev/null  2>&1
ffmpeg -y -f s16le -ar ${fs} -ac 1 -i temp.raw all.wav > /dev/null  2>&1

for (( i=0; i<${#ch_a[*]}; i++ ))
do

ch=${ch_a[$i]}

# 谷歌翻译から ${ch} の音声データをダウンロードする
mp3file="download_voice.mp3"
agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0"
wget --user-agent="${agent}" \
--quiet \
"http://translate.google.com/translate_tts?tl=zh-ch&q="${ch}"&client=tw-ob" \
-O ${mp3file}
mplayer ${mp3file} >/dev/null 2>&1

# mp3file を wav形式に変換し、同じ長さの無音ファイルを作成する
ffmpeg -y -i ${mp3file} temp.wav > /dev/null  2>&1
nbyte=`cat temp.wav | wc -c`
dd if=/dev/zero of=temp.raw count=${nbyte} bs=2 > /dev/null  2>&1
ffmpeg -y -f s16le -ar ${fs} -ac 1 -i temp.raw zero.wav > /dev/null  2>&1
# wav形式の音声ファイルと無音ファイルを2回連続でall.wavに追加する
for (( iter=0; iter<2; iter++ ))
do
  ffmpeg -i all.wav -i temp.wav -i zero.wav \
    -filter_complex "concat=n=3:v=0:a=1" output.wav > /dev/null  2>&1
  mv output.wav all.wav
done

done

# all.wavをoutput.mp3に変換し要らないファイルを削除する
ffmpeg -i all.wav ${output}.mp3 
rm temp.wav temp.raw zero.wav all.wav ${mp3file}

f:id:S_E_Hyphen:20210606170204p:plain