Android与文本同步音频

时间:2016-10-23 17:49:37

标签: android synchronization speech

我正在开发一个包含文本和录制音频的应用程序(在波斯语 - 波斯语中)。是否有任何API可以将这两者相互同步。有没有办法在播放音频时突出显示文本。

2 个答案:

答案 0 :(得分:0)

我认为没有任何标准的api,因为它听起来像一种特定的功能。提供它的全面实施将是如此广泛,但是 尽管我可以给你一个研究方向,因为我认为这是一个很好的问题。

您应该为每个音频文件创建某种类型的字幕文件,例如srt,其中可分配的单词将与音频上的代词时间映射。之后,您应该在应用中parse that file创建一个<a class="one">One</a> <a class="two">Two</a> 句点。因此,使用Map回调,根据音频时间突出显示文本不会成为问题。此解决方案使您可以动态地向应用程序添加带字幕的音频文件。当然,您可以直接将字幕硬编码到您的应用程序中,如果您不需要这样的灵活性,请避免这种复杂的解析过程。

答案 1 :(得分:0)

我认为我来回答这个问题为时已晚,也是非常困难和耗时,但我建议你,但如果你有多个音频,如audio1,audio2,audio3等,你就是一个接一个地播放然后循环播放在Mediaplayer中,您可以通过保留文本记录来突出显示文本[如果在数组中]。例如,如果text1 [在数组中]然后播放audio1。我在listview中实现了这个:

        mPlayer.start();
            a++;
            z=1;
            mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer mp) {
                    if (a!=b+1) {
                        if(mPlayer != null) {
                            if(mPlayer.isPlaying()) {
                                mPlayer.stop();
                            }
                            mPlayer.reset();
                        }
                        try {
                            mPlayer.setDataSource("/mnt/sdcard/audio/aya(" + a + ").mp3");
                            mPlayer.prepare();
                            quranlst.setFocusableInTouchMode(true);
                            quranlst.setSelection(z);
                            quranlst.requestFocus();
                         quranlst.getChildAt(z).setBackgroundColor(Color.WHITE);




                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        mPlayer.start();

                        a++;
                        z++;

其中z是文本位置。希望这会给你一些想法。