我需要在带宽较低的环境中运行Google Speech API。
根据对最佳做法的了解,似乎最好的选择是使用AMR_WB格式。
但是,以下代码不会产生任何异常,并且在var socket = Socket("https://192.168.113.157:8443/HLS_BACKEND/rtisTrackDataGIS");
socket.on("message", function(event){
var data = event.data;
console.log(data);///////////////////////////////////
方法中没有任何响应,但是API在onError(t: Throwable)
方法中根本没有返回任何值。
如果我将onNext(value: StreamingRecognizeResponse)
或.setEncoding()
的格式从FLAC
改回AMR_WB
,一切正常。
AudioEmitter.kt
LINEAR16
MainActivity.kt
fun start(
encoding: Int = AudioFormat.ENCODING_PCM_16BIT,
channel: Int = AudioFormat.CHANNEL_IN_MONO,
sampleRate: Int = 16000,
subscriber: (ByteString) -> Unit
)
答案 0 :(得分:0)
Google不会识别您的数据,因为您告诉它数据为 FLAC 或 AMR_WB 格式,而您一直在传递{{1 }}产生。
现在,为了使其正常工作,您有两种选择。首先是自己将数据转换为所需的格式,可能使用某些第三方库。第二个是使用Android库中的 MediaRecorder 。不幸的是,它仅支持写入类似文件的目标,因此您不能简单地用它替换 AudioRecorder ,但是this answer中描述了一种解决方法。