2

如果我使用 Android MediaRecorder 记录我的文件,我可以像这样设置它的属性:

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 之间到底有什么区别?

4

0 回答 0