#!/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}