在树莓派上,我正在尝试使用 gstreamer 将音频录制为 .flac 或 .wav 文件。
我希望将音频文件发送到非官方的谷歌语音 api 服务器
但我的 gstreamer 管道输出为 wav
gst-launch-0.10 -e alsasrc device=hw:1 ! audioconvert ! audioresample ! audio/x-raw-int, depth=16, rate=16000, channels=1 ! wavenc ! filesink location= o.wav
或作为flac
gst-launch-0.10 -e alsasrc device=hw:1 ! audioconvert ! audioresample ! audio/x-raw-int, depth=16, rate=16000, channels=1 ! flacenc ! filesink location= o.flac
总是被拒绝。
错误:(错误的文件格式或错误的采样率)
{"status":5,"id":"11e0fa5e371b2f0a1a87def81f8383bc-1","hypotheses":[]}
使用 sox 进行正常录制并使用 ffmpeg 或 flac 进行编码正在工作,所以我猜 gstreamer 的输出文件不知何故损坏了,或者我错过了一些东西
编辑: 使用 -v http://hastebin.com/vovefeyewe.vbs运行的管道在 alsasrc 之后添加了一个队列,但仍然是同样的问题
解决了
附加参数解决了问题
gst-launch-0.10 -e -v alsasrc device=hw:1 ! audioconvert ! audioresample ! "audio/x-raw-int, rate=(int)16000, channels=(int)1, endianness=(int)1234, width=(int)16, depth=(int)16, signed=(boolean)true, channles=(int)1" ! wavenc ! filesink location=g.wav
如果没有声音或只有随机噪音,谷歌将拒绝带有(错误格式错误)的文件