如果我使用Android MediaRecorder录制i文件,我可以设置如下属性:
this.recorder.SetAudioSource(AudioSource.Mic);
this.recorder.SetOutputFormat(OutputFormat.AmrWb);
this.recorder.SetAudioEncoder(AudioEncoder.AmrWb);
this.recorder.SetAudioSamplingRate(16000);
它生成 3gpp -File。如果我将录制的文件发送到Google Cloud Speech API,则会识别音频并将其转换为文本:
var response = speech.SyncRecognize(new RecognitionConfig()
{
Encoding = RecognitionConfig.Types.AudioEncoding.AmrWb,
SampleRate = 16000,
LanguageCode ="de-DE"
}, RecognitionAudio.FromFile("test.3gpp"));
但是,如果我将OutputFormat更改为
this.recorder.SetOutputFormat(OutputFormat.ThreeGpp);
它还会生成.3gpp文件,但Google Cloud API会引发错误。这很奇怪,因为我认为OutputFormat并不重要,只是定义了在两种情况下都是AMR编码的编码数据的容器。所以我的问题是:
AMR和ThreeGpp OutputFormat之间究竟有什么区别?