Browse Source

修复安卓录音,通话翻译问题

newdev_shunjiawei
fdp 1 year ago
parent
commit
e2812227e1
  1. 7
      local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt
  2. 20
      local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt

7
local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureAsrHelper.kt

@ -504,10 +504,9 @@ class AzureAsrHelper(private val context: Context) {
}
// 启动音频处理
audioStream!!.startAudioRecord( when(audioSourceType) {
AudioSourceType.MICROPHONE -> SimpleAudioReceiver.AudioSourceType.MICROPHONE
AudioSourceType.EXTERNAL -> SimpleAudioReceiver.AudioSourceType.EXTERNAL
},audioDataCallback)
audioStream!!.startAudioRecord(SimpleAudioReceiver.AudioSourceType.MICROPHONE
,audioDataCallback)
audioStream!!.recordfile!!.closeFile(true)

20
local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt

@ -85,7 +85,8 @@ class SimpleAudioReceiver(private val context: Context) {
* 初始化音频录制
*/
fun initAudioRecord() {
val format = getOptimalAudioFormat()
pushAudioStream = AudioInputStream.createPushStream(format)
isRunning.set(true)
Log.d(TAG, "initAudioRecord: ${isRunning}")
startWriteThread() // 再启动数据读取线程
@ -142,7 +143,7 @@ class SimpleAudioReceiver(private val context: Context) {
if(audioDataCallback!=null){
audioDataCallback?.onAudio(finalData)
}
if(pushAudioStream!=null){
if(pushAudioStream!=null&&audioDataCallback==null){
pushAudioStream?.write(finalData)
}
if(recordfile!=null){
@ -184,8 +185,6 @@ class SimpleAudioReceiver(private val context: Context) {
* @param callback 音频数据回调,可为空
*/
fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallback?) {
val format = getOptimalAudioFormat()
pushAudioStream = AudioInputStream.createPushStream(format)
this.audioSourceType = audioSourceType
this.audioDataCallback = callback
writeQueue.clear()
@ -240,8 +239,6 @@ class SimpleAudioReceiver(private val context: Context) {
try {
// 首先设置通话音频模式
//setupCommunicationAudioMode()
val supportedSampleRates = intArrayOf(16000, 8000, 11025, 22050, 44100)
val sampleRate = supportedSampleRates.firstOrNull { rate ->
val bufferSize = AudioRecord.getMinBufferSize(rate, channelConfig, audioFormat)
@ -278,7 +275,7 @@ class SimpleAudioReceiver(private val context: Context) {
}
audioRecord?.startRecording()
Log.d("TAG", "通话模式录音开始,采样率: $sampleRate Hz")
} catch (e: Exception) {
@ -316,7 +313,8 @@ class SimpleAudioReceiver(private val context: Context) {
//setupCommunicationAudioMode()
// 停止录音
audioRecord?.startRecording()
} catch (e: Exception) {
Log.e(TAG, "继续录音失败: ${e.message}")
}
@ -331,11 +329,7 @@ class SimpleAudioReceiver(private val context: Context) {
// 停止录音
audioRecord?.stop()
if(pushAudioStream != null){
pushAudioStream?.close()
pushAudioStream = null
}
// 恢复音频模式 这里会导致关闭麦克风卡住待优化
//restoreCommunicationAudioMode()

Loading…
Cancel
Save