Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 同时录制音频并转换为文本_Android_Speech To Text - Fatal编程技术网

Android 同时录制音频并转换为文本

Android 同时录制音频并转换为文本,android,speech-to-text,Android,Speech To Text,我开发了一个应用程序,可以记录特定时间段的音频,另一个应用程序使用web将语音转换为文本。 这两件事有可能同时进行吗?我的意思是录制音频并将录制的音频文件中的语音转换为文本?您这样做的方式可能不太准确,因为对语音输入有许多不同的建议。但你可以尝试一下。 据我所知,您应该在后台运行音频服务并启动语音检测。 对于后台服务,就是如何使用它们。您也可以看到完整的应用程序。 有关语音识别,您可以参考 这就是创建服务的方式。 最好将媒体代码投入使用。这是在后台播放媒体的最佳方式 public class s

我开发了一个应用程序,可以记录特定时间段的音频,另一个应用程序使用web将语音转换为文本。
这两件事有可能同时进行吗?我的意思是录制音频并将录制的音频文件中的语音转换为文本?

您这样做的方式可能不太准确,因为对语音输入有许多不同的建议。但你可以尝试一下。
据我所知,您应该在后台运行音频服务并启动语音检测。
对于后台服务,就是如何使用它们。您也可以看到完整的应用程序。
有关语音识别,您可以参考

这就是创建服务的方式。
最好将媒体代码投入使用。这是在后台播放媒体的最佳方式

public class serv extends Service{

    MediaPlayer mp;
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
    public void onCreate()
    {   
        mp = MediaPlayer.create(this, R.raw.b);
        mp.setLooping(false);
    }
    public void onDestroy()
    {       
        mp.stop();
    }
    public void onStart(Intent intent,int startid){

        Log.d(tag, "On start");
        mp.start();
    }
}
其中原始文件夹是在资源中创建的。R.raw.b是一个mp3文件。
在您发出此意向之前,请致电此服务

/**
 * Fire an intent to start the voice recognition activity.
 */
private void startVoiceRecognitionActivity()
{
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo...");
    startActivityForResult(intent, REQUEST_CODE);
}

/**
 * Handle the results from the voice recognition activity.
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
    {
        // Populate the wordsList with the String values the recognition engine thought it heard
        ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                matches));
    }
    super.onActivityResult(requestCode, resultCode, data);
}  
/**
*激发启动语音识别活动的意图。
*/
私有void startVoiceRecognitionActivity()
{
意向意向=新意向(识别意向、行动、识别言语);
intent.putExtra(识别器intent.EXTRA_语言_模型,
识别者意图、语言、模型、自由形式);
intent.putExtra(RecognizerIntent.EXTRA_提示符,“语音识别演示…”);
startActivityForResult(意图、请求代码);
}
/**
*处理语音识别活动的结果。
*/
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据)
{
if(requestCode==REQUEST\u CODE&&resultCode==RESULT\u OK)
{
//用识别引擎认为听到的字符串值填充wordsList
ArrayList matches=data.getStringArrayListExtra(
识别者意图。额外结果);
setAdapter(新的ArrayAdapter)(这个,android.R.layout.simple\u list\u item\u 1,
火柴);
}
super.onActivityResult(请求代码、结果代码、数据);
}  

我想您已经尝试将它们放在两个单独的线程中了?虽然这可能会失败,因为您将尝试同时访问同一个音频文件。您可能需要等待关闭音频文件,然后上载它。一个选择可能是使用静音检测将音频分块录制,然后一次处理几个字。我还无法在语音到文本转换应用程序中实现音频文件的上载。是否可以这样做?如果可以,请您在资源方面帮助我?我只是假设您正在上载它。无论你是如何将语音转换为文本,我认为唯一的方法是将音频保存为小块,并单独处理每个小块。是否可以使用可用的谷歌API存储音频并转换为文本