IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【安卓学习之开源项目】 ParrotTongue:文字转语音(含LeLeTextToVoice、TextToMp3项目) -> 正文阅读

[人工智能]【安卓学习之开源项目】 ParrotTongue:文字转语音(含LeLeTextToVoice、TextToMp3项目)

█ 【安卓学习之开源项目】 ParrotTongue:文字转语音(含LeLeTextToVoice、TextToMp3项目)


█ 系列文章目录

提示:这里是收集了安卓学习之常见问题的相关文章


█ 文章目录


█ 读前说明

  • 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
  • 本文只简单罗列相关的代码实现过程
  • 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已
  • 项目源码:ParrotTongue
  • demo:

█ 项目UI

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

█ 项目信息

?? 提交信息:2020 年 2 月 7 日
在这里插入图片描述

?? 配置信息
 ● 在Project的build.gradle文件中配置:

buildscript {
    repositories {
        google()
        jcenter()  
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'// 升级为 4.1.1
    }
}

● 在Project的gradle-wrapper.properties文件中配置:

#Sun Dec 08 22:42:32 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip// 升级为 6.5

● 在Module的build.gradle文件中添加依赖和属性配置:

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.whn946.parrottongue"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 4
        versionName "2.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
}

█ 开始:AudioRecordThread 和 Mp3EncodeThread

?? AudioRecordThread

█ 常见问题

?? 安装语音引擎
小米手机,默认已经安装了【小爱语音引擎】

?? FileNotFoundException

021-08-14 17:22:39.914 20241-20241/com.whn946.parrottongue E/TextToSpeech: Opening file /storage/emulated/0/0pcm/11-20210814172239.mp3 failed
    java.io.FileNotFoundException: open failed: EACCES (Permission denied)
        at android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:315)
        at android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:220)
        at android.speech.tts.TextToSpeech$17.run(TextToSpeech.java:1842)
        at android.speech.tts.TextToSpeech$17.run(TextToSpeech.java:1832)
        at android.speech.tts.TextToSpeech$Connection.runAction(TextToSpeech.java:2312)
        at android.speech.tts.TextToSpeech.runAction(TextToSpeech.java:763)
        at android.speech.tts.TextToSpeech.runAction(TextToSpeech.java:753)
        at android.speech.tts.TextToSpeech.synthesizeToFile(TextToSpeech.java:1832)
        at android.speech.tts.TextToSpeech.synthesizeToFile(TextToSpeech.java:1889)
        at com.whn946.parrottongue.DefaultModeActivity$11$1.onClick(DefaultModeActivity.java:282)
        at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7592)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

在这里插入图片描述
参考:2020-04-08 关于Android java.io.FileNotFoundException: open failed: EACCES (Permission denied)_zhuhuitao_struggle-CSDN博客
Android Q 默认开启沙箱模式 导致出现文件读写失败,在manifest application中加上 android:requestLegacyExternalStorage=“true”

在这里插入图片描述

在这里插入图片描述

█ 附赠1:LeLeTextToVoice-OCR(图片转文字)

??在Module的build.gradle文件中添加依赖和属性配置:

dependencies {
    implementation 'com.jakewharton.rxbinding:rxbinding:1.0.0'
    implementation 'com.rmtheis:tess-two:6.2.0'
}

??封装工具OCRUtils :

public class OCRUtils {

    private static final String TAG = "OCR";
    @RequiresApi(api = Build.VERSION_CODES.N)
    public static String parseImageToString(Bitmap bitmap) throws IOException {
        if( bitmap == null ){
            return "";
        }

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 2;
        //图片旋转角度
        int rotate = 0;
        //先获取当前图像的方向,判断是否需要旋转
        //将bitmap转化为input
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        InputStream isBm = new ByteArrayInputStream(baos.toByteArray());
        ExifInterface exif = new ExifInterface(isBm);
        int imageOriention = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_NORMAL);

        Log.i(TAG, "Current image orientation is " + imageOriention);

        switch (imageOriention){
            case ExifInterface.ORIENTATION_ROTATE_90:
                rotate = 90;
                break;
            case ExifInterface.ORIENTATION_ROTATE_180:
                rotate = 180;
                break;
            case ExifInterface.ORIENTATION_ROTATE_270:
                rotate = 270;
                break;
        }

        Log.i(TAG, "Current image rotate is " + rotate);

        //获取当前图片的宽和高
        int w = bitmap.getWidth();
        int h = bitmap.getHeight();

        //使用Matrix 矩阵对图片进行处理
        Matrix mtx = new Matrix();
        mtx.preRotate(rotate);

        //旋转图片
        bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);
        bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

        //开始调用Tess函数进行识别
        TessBaseAPI baseAPI = new TessBaseAPI();
        baseAPI.setDebug(true);

        //使用默认语言初始化BaseApi
        baseAPI.init(Environment.getExternalStorageDirectory().getPath()+"/tesseract/", "eng");
        baseAPI.setImage(bitmap);

        // 获取返回值
        String recognizedText = baseAPI.getUTF8Text();
        Log.i(TAG, "exchanged : " + recognizedText);

        return recognizedText;
    }
}

??使用(图片转文字) :

        RxView.clicks(findViewById(R.id.btn_ocr))
                .throttleFirst(500, TimeUnit.MILLISECONDS)
                .subscribe(new Action1<Void>() {
                    @RequiresApi(api = Build.VERSION_CODES.N)
                    @Override
                    public void call(Void aVoid) {
                        try {
                            String text = OCRUtils.parseImageToString(BitmapFactory.decodeResource(MainActivity.this.getResources(), R.mipmap.test));
                            Log.e("MainActivity","text2 ="+text);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });

█ 附赠2:TextToMp3(收费,需要联网)

??TextToMp3工具下载是一款文字转语音的工具,为你制作广告,有声小说,文档,案例。或者做一些自媒体节目。或者上传到有声小说,有声阅读平台都是非常不错的工具,推荐来下载体验。

??需要联网,导出时,需要金币,金币需要充值收费
在这里插入图片描述

??软件介绍
在这里插入图片描述

软件介绍
一款人气较高的软件。TextTomp3软件是一款文本转语音app,TextToMp3 app可以迅速将文字转化成语音,方便快捷,而且TextToMp3 app还支持外语配音,多语言支持,功能强大。
软件功能
* Text To Mp3支持多语种配音:英语配音、日语配音、韩语配音;
* Text To Mp3支持添加背景音乐;
* Text To Mp3支持录音功能;
* Text To Mp3支持mp3分享和导出;
* Text To Mp3支持文字转语音;
* Text To Mp3支持免费文字转语音(TTS)播放Mp3配音;
* Text To Mp3支持免费语音合成;
软件特色
1、广告配音:商场广告宣传配音,企业宣传配音,电影配音等;
2、语音合成:制作各种配音,小说配音,杂志,教科书阅读等;
3、广播配音:学校,企业,车站,机场和购物中心的广播;
4、多媒体配音:光盘解说、集团彩铃、电信、金融CTI的语音录制。
5、解说配音:企业专题片、建筑动画、工程标书解说等配音解说。
6、教学配音:电子词典、教材、电子图书、各类语音IC系列录制。

在这里插入图片描述
在这里插入图片描述


█ 相关资料

提示:这里是参考的相关文章

  1. Mr946/ParrotTongue: 文转音-安卓调用系统TTS实现文字转语音并保存为mp3音频文件。
  2. 2020-04-08 关于Android java.io.FileNotFoundException: open failed: EACCES (Permission denied)_zhuhuitao_struggle-CSDN博客
  3. 2018-09-12 android客户端ORC图片识别库tess_two的使用_隔壁小王的博客-CSDN博客
  4. 2016-05-03 文字转语音花费太多时间,而synthesizeToFile Android中 - VoidCC:使用Android内置TTS Engine合成mp3文件,文字转语音花费太多时间,我已经解决了这个问题,将整个文件转换为段落块,并将段落添加到TTS引擎并直接播放。
  5. 2017-02-06 LeLeTextToVoice: 将文字转换为语音:防止重复点击rxbinding、加载动画Android-SpinKit、OCR工具Tess-Two、科大讯飞Msc.jar
  6. TextToMp3工具下载|TextToMp3v2.0.10安卓版下载 - 99安卓游戏
  7. 官网:离线语音合成 - 语音合成 - 讯飞开放平台
  8. 官网:TextToSpeech - synthesizeToFile | Android 开发者 | Android Developers

█ 免责声明

博主分享的所有文章内容,部分参考网上教程,引用大神高论,部分亲身实践,记下笔录,内容可能存在诸多不实之处,还望海涵,本内容仅供学习研究使用,切勿用于商业用途,若您是部分内容的作者,不喜欢此内容被分享出来,可联系博主说明相关情况通知删除,感谢您的理解与支持!

提示:转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/119703057

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:32:20  更:2021-08-15 15:37:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:28:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码