使用CamerX android进行视频录制时使用语音识别器API

2024-03-28

我目前正在使用cameraX 来录制带有音频的视频,并且工作得很好,但是现在我必须在录制视频时使用SpeechRecognizer 并获取用户所说内容的转录。

UPDATE:

我尝试从视频中提取音频,然后将其作为额外内容提供给意图,但它不起作用。因此,我考虑直接从 SpeechRecognizer 意图获取音频,但这是一个死胡同,因为文档中的任何地方都没有提到 uri 或临时文件。我现在尝试在语音识别器开始监听时启动媒体记录器,但这仅在第一次监听时有效。

我基本上已经尝试了一切,但进展为零,有人有新想法吗?

    private fun doWhileRecording(state:UiState){
    when(state){
     UiState.IDLE -> {
            
                    }
                    UiState.RECORDING -> {
                        tts!!.stop()
                        startSpeechToText()
             
                    }
                    UiState.FINALIZED -> {
                       
                    }
    }
    
    private fun startSpeechToText() {
            val speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this.requireContext())
            val speechRecognizerIntent = Intent(RecognizerIntent.EXTRA_AUDIO_INJECT_SOURCE)
            speechRecognizerIntent.putExtra(
                RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
            )
            speechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault())
    
            speechRecognizer.setRecognitionListener(object : RecognitionListener {
                override fun onReadyForSpeech(bundle: Bundle?) {
                    Log.i("STT","ready")
                }
                override fun onBeginningOfSpeech() {
                    Log.i("STT","begin")
                   startRecordingAudio()
                }
                override fun onRmsChanged(v: Float) {}
                override fun onBufferReceived(bytes: ByteArray?) {}
                override fun onEndOfSpeech() {}
                override fun onError(i: Int) {}
    
                override fun onResults(bundle: Bundle) {
                    val result = bundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
                    if (result != null) {
                        // result[0] will give the output of speech
                        Log.i("STT","you said: ${result[0]}")
                      stopAudioRecording()
                    }else{
                        Log.i("STT","results null boo")
                    }
                }
                override fun onPartialResults(bundle: Bundle) {}
                override fun onEvent(i: Int, bundle: Bundle?) {}
            })
            // starts listening ...
            speechRecognizer.startListening(speechRecognizerIntent)
        }

 private fun startRecordingAudio() {
    
            // below method is used to initialize
            // the media recorder clss
            mRecorder = MediaRecorder()

            // below method is used to set the audio
            // source which we are using a mic.
            mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION)
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)

            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)

            mRecorder.setOutputFile(audioFileRecorded.path)
            try {

                mRecorder.prepare()
            } catch (e: IOException) {
                Log.e("TAG", "prepare() failed")
            }
            // start method will start
            // the audio recording.
            mRecorder.start()


    }
private fun stopAudioRecording(){
        mRecorder.stop();

        // below method will release
        // the media recorder class.
        mRecorder.release()

}

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用CamerX android进行视频录制时使用语音识别器API 的相关文章

  • 外部硬件指纹扫描仪和 Android 设备集成

    我想建立一个android像员工考勤这样的应用程序使用fingerprint scanner 我想知道 是否可以使用外部硬件设备进行指纹识别 扫描 如何将Android应用程序与外部硬件finger集成 打印扫描设备 如何从外部硬件设备获取
  • Firebase FCM 通知图像不会显示

    我在我的项目中使用 FCM 当尝试使用 firebase 撰写通知 功能测试传入通知时 我将标题 正文和图像 URL 添加到消息中 它显示了它应该是什么样子 丰富的通知与图像 但发送给我的通知是正常的 没有任何图像 这是 firebase
  • 如何在 1 个活动 (android) 中显示 2 个视图?

    假设我打开了一个网络视图 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout ma
  • 在android中的操作栏中标题左侧添加图标

    我想在操作栏中标题的左侧添加一个可点击的图标 按钮 怎么做 以下是我向操作栏添加搜索和设置图标的代码 它们出现在右侧 但我想在标题左侧添加一个新图标 怎么做 XML menu menu
  • 安卓多点触控?

    作为一名开发人员 我倾向于先编程 然后再研究 我试图实现一个可以处理多个用户输入的屏幕 基本上映射的不仅仅是一根手指 我尝试了两件事 我有一个实现 OnTouchListener 的 Activity 类 这里我有两个单独的子视图 它们将
  • 在 Android 中使用 Facebook Achievement API

    我知道这可能看起来像一个通用问题 但找到有关该主题的信息似乎非常困难 因此 如果某个地方存在完整的示例 指南 源代码链接 我将不胜感激 我正在开发一款 Android 游戏 希望集成 Facebook 成就 我想要的只是在用户完成某个谜题时
  • Android 在 ROOM 数据库中插入大量数据

    我有大约 10 个模型 每个模型都有超过 120K 行和 90 列的记录 其中包含双数组值 在 Room 中插入任何模型都需要超过 125 130 秒 任何人都可以建议我需要做什么才能使用一些批量插入技术来保存所有这些 120K 该技术大约
  • Android 中未找到 PhoneGap 类错误

    我的 PhoneGap Android 应用程序遇到一些问题 到目前为止我明白了 我已经把一切都做好了 这是我所做的 在 Eclipse 中创建项目后 我在 libs 文件夹中添加了 cordova 2 2 0 jar 然后我编辑了Andr
  • 我如何将值从基本适配器传递到活动

    我正在一个应用程序中工作 我需要将值从基本适配器类传递到活动 这是片段代码 public View getView int position View convertView ViewGroup parent vi convertView
  • 带有电子墨水显示屏的 Android

    我有兴趣使用 AndroidE Ink http www eink com technology howitworks html为基础的平台 我知道已经是证明了 http vimeo com 3162590MOTO 曾经使用过 但我有兴趣将
  • ListView.hasWindowFocus==true 但子视图 hasWindowFocus==false

    有时我注意到 对于 View v v hasWindowFocus false View v getParent hasWindowFocus true 如果我正确理解文档 情况就不应该如此 v getParent 是 ListView 的
  • 将文本视图添加到布局中?

    如果我的按钮不移动 我就无法在按钮上方放置文本视图 我该如何解决这个问题 被困在这个问题上 4 个小时了 这很伤心 因为我正在尝试在我的布局上添加一个文本视图 我的布局中心有 4 个按钮 我只想在四个按钮上方添加一个文本视图 如下所示 Te
  • Genymotion Google Nexus 6P 7.0.0 与 Open_Gapps 手臂 7.0.0

    With Genymotion 2 8 0 我已经安装了谷歌 Nexus 6P 7 0 0API 级别为 24 的设备 启动设备后 我刷新了 ARM 虚拟转换器并重新启动了设备 然后 我从下载 open gapps用于 Playstore
  • 如何使用 Mikephil 饼图从项目中删除小数位

    这是整数的静态值 private int upload 14 bill 15 unbill 85 total 100 unupload 12 sign 10 unsign 90 print 12 unprint 88 设置饼图条目 Arra
  • android tabwidget意图选项卡刷新每次点击

    我想使用具有意图的子选项卡创建一个选项卡 以便当用户单击选项卡意图时刷新 每次用户单击选项卡时 我想刷新并调用子意图选项卡的 oncreate 方法 public class Tabs3 extends TabActivity Overri
  • MaterialDatePicker 错误:要在应用程序主题中设置materialCalendarFullscreenTheme 属性

    我做了什么 Added implementation com google android material material 1 1 0 在依赖关系中 Set Theme MaterialComponents Light Bridge作为
  • 现已弃用使用 Google Places API 获取多种类型

    谷歌最近宣布 自 2016 年 2 月 16 日起 types 参数已被弃用 取而代之的是新的类型参数 每个搜索请求仅支持一种类型 我的问题是 现在有什么方法 不使用已弃用的参数 从单个 API 调用中获取多个地点类型吗 谢谢 None
  • 使用 libgdx 裁剪图像

    I need to crop image like this 我需要从中心绘制部分图像 我知道有一个带有很多参数的批处理的draw 方法 但是没有关于所有这些参数的良好文档 所以我不知道如何使用它 这是我实现的 public class T
  • 如何强制元数据值类型为字符串?

    我在manifest xml中指定了一个元数据 如下所示
  • Android Studio同时为同一个项目构建两个应用程序

    我正在使用 Android Studio v0 5 9 制作一个应用程序 它有一个图书馆项目作为依赖 但是 每次我运行该项目时 都会将两个具有相同名称和图标的 APK 部署到我的设备上 第一个 apk app 包含我的主模块 而第二个是库项

随机推荐