精华内容
下载资源
问答
  • java 实现文字语音功能并同时生成语音文件 demo

    千次阅读 热门讨论 2019-11-29 16:02:04
    文字语音功能并同时生成语音文件 这个demo实现的是 你传输一个字符串对象 程序把你传输的对象里的字符串 转成一个可语音文件 并且会在你本机出来 !!!如果没有出来请首先检查你电脑的声音是否已经...

                            文字转语音功能并同时生成语音文件

     

      这个demo实现的是 你传输一个字符串对象 程序把你传输的对象里的字符串 转成一个可读的语音文件 并且会在你本机读出来

    !!!如果没有读出来请首先检查你电脑的声音是否已经打开在检查你jacob-1.18-x64.dll是否已经放到jdk的bin目录里了

    按着步骤来即可

    第一步:把文件夹中  jacob-1.18-x64.dll 文件放到 jdk-bin目录下

    第二步:在项目的pom.xml这添加maven坐标依赖
    maven依赖:
        <!-- 文字转语音依赖 -->
        <dependency>
            <groupId>com.hynnet</groupId>
            <artifactId>jacob</artifactId>
            <version>1.18</version>
        </dependency>

    第三步:直接把 以下方法取到你做文字转语音的类位置改一下直接调用即可(代码都有注释)

    	public static void main(String[] args) {
    		textToSpeech("你好,我叫小马,今年十岁了。","D:/file");
    	}
    
    	/**
    	 * @author 
    	 * @date: 2019年
    	 * 文字转语音并生成语音文件方法
    	 * input:	data:需要转的文字对象,path:语音文件保存位置对象
    	 */
    	public static void textToSpeech(String data,String path) {
    		ActiveXComponent ax = null;
    		try {
    			ax = new ActiveXComponent("Sapi.SpVoice");
    
    			// 运行时输出语音内容
    			Dispatch spVoice = ax.getObject();
    			// 音量 0-100
    			ax.setProperty("Volume", new Variant(100));
    			// 语音朗读速度 -10 到 +10
    			ax.setProperty("Rate", new Variant(-2));
    			// 执行朗读
    			Dispatch.call(spVoice, "Speak", new Variant(data));
    
    			// 下面是构建文件流把生成语音文件
    			ax = new ActiveXComponent("Sapi.SpFileStream");
    			Dispatch spFileStream = ax.getObject();
    
    			ax = new ActiveXComponent("Sapi.SpAudioFormat");
    			Dispatch spAudioFormat = ax.getObject();
    
    			// 设置音频流格式
    			Dispatch.put(spAudioFormat, "Type", new Variant(22));
    			// 设置文件输出流格式
    			Dispatch.putRef(spFileStream, "Format", spAudioFormat);
    			// 调用输出 文件流打开方法,创建一个.wav文件
    			Dispatch.call(spFileStream, "Open", new Variant(path+"/voice.wav"), new Variant(3), new Variant(true));
    			// 设置声音对象的音频输出流为输出文件对象
    			Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);
    			// 设置音量 0到100
    			Dispatch.put(spVoice, "Volume", new Variant(100));
    			// 设置朗读速度
    			Dispatch.put(spVoice, "Rate", new Variant(-2));
    			// 开始朗读
    			Dispatch.call(spVoice, "Speak", new Variant(data));
    
    			// 关闭输出文件
    			Dispatch.call(spFileStream, "Close");
    			Dispatch.putRef(spVoice, "AudioOutputStream", null);
    
    			spAudioFormat.safeRelease();
    			spFileStream.safeRelease();
    			spVoice.safeRelease();
    			ax.safeRelease();
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}

     

    程序运行完后会在你的path指定都目录生成可读的voice.wav语音文件

     

    获取jacob-1.18-x64.dll文件的路径:https://pan.baidu.com/s/1_W-l80as1yvDwDITznEYZg 提取码为:21t6

     

    以上如有问题可评论  我看到立马回答

    打赏打赏吧

    请不要直接转载 !!!

    展开全文
  • java语音朗读实例。TTS调用实例

    热门讨论 2011-11-29 10:39:23
    java+tts读文字语音功能模块~java调用TTS的实例
  • 详情介绍短信来电报姓名是一款非常魔性的来电语音工具,这里结合了当下十分流行的各种梗和诸多十分魔性的...还有定时语音提醒功能:如到点语音提醒开会,语音内容是你输入的文字内容短信来电报姓名说明1、简约界面...

    详情介绍

    读短信来电报姓名是一款非常魔性的来电语音工具,这里结合了当下十分流行的各种梗和诸多十分魔性的声音制作的语音包去供玩家自由选择,总有一款自己喜欢的语音包哟!

    读短信来电报姓名特色

    来了短信可以自动读出来;

    来了电话可以将号码读出来,并且自动说出联系人的名字,你不用看手机就知道是谁了;

    还能给你讲笑话;

    还有定时语音提醒功能:如到点语音提醒开会,语音内容是你输入的文字内容

    20cecdead16fb47c3cf92f75a54c822e.png

    读短信来电报姓名说明

    1、简约界面设计实用功能快速上手使用;

    2、自动的播报来电号码联系人名字;

    3、自动播报短息内容无需拿出手机查看;

    4、支持男声女生不同的方言播报。

    读短信来电报姓名亮点

    1.该应用程序可以执行呼叫者广播功能,使客户可以快速了解呼叫者的姓名。

    2.短消息的内容可以通过语音广播,并且可以自动读取。

    3.阅读短信来电者姓名以提供英语评估,帮助纠正客户的英语发音。

    4.客户可以通过语音编辑短信,也可以通过语音转换短信发送短信。

    5.应用程序可以个性化设置广播者,广播语速,时间,设置禁止号码。

    6.该应用程序支持大声朗读文本,将文本复制并粘贴到应用程序,该应用程序将自动转换为语音。

    1af93ce83479f1b8f2193b6b7cbcef56.png

    读短信来电报姓名更新日志

    1)更新号码归属地资源库;

    2)优化语音播音参数;

    读短信来电报姓名小编点评

    这款软件文完美的复制抖音上和网上诸多热点和爆点,绝对会让用户爱不释手哟!

    展开全文
  • VoiceAnnouncements.java

    2019-06-03 14:04:57
    JAVA从.docx里面去读文字,进行语音播报.从.docx里面去读文字,进行语音播报.
  • java tts text to speech

    热门讨论 2013-01-15 16:25:58
    java调用微软的语音库,将传过来的文字读出来。 我这里上传了源代码,jar包,和具体方法。 微软的语音库下载地址百度上一堆,就不上传了。 下载要两分是因为我实在没分了。
  • Java编写的Socket Udp通讯源码,展示了Java绑定IP监听Udp端口;解析端口接收到的数据包获取读卡器上传的读卡数据;向读卡器发送读卡、写卡、驱动读卡器显示文字、播报TTS语音等指令;
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • Java资源包01

    2016-08-31 09:16:25
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包101

    2016-07-13 10:11:08
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包2

    热门讨论 2013-06-28 09:17:39
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包3

    热门讨论 2013-06-28 09:20:52
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包5

    热门讨论 2013-06-28 09:38:46
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包4

    热门讨论 2013-06-28 09:26:54
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • java开源包7

    热门讨论 2013-06-28 09:52:16
    该框架封装了线程处理、异步/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 ...
  • TTS语音音频合成开发接口

    千次阅读 2012-04-18 13:15:19
    功能说明: 该DLL是通过调用Windows语音合成引擎(SPEECH SYNTHESIS ...另外还支持播放音频文件(.wav,.mp3等),文字音频文件混,目前我们开发的DLL支持C#、Delphi、VB、Python、JAVA语音进行调用,让您轻松实...
    功能说明:
    该DLL是通过调用Windows语音合成引擎(SPEECH SYNTHESIS ENGINE)进行语言合成,将文本处理后通过扬声器用近似于人的声音“读”出来,通常还可以通过改变对语音引擎的设置改变“说话” 的速度,声音频率;另外还支持播放音频文件(.wav,.mp3等),文字音频文件混读,目前我们开发的DLL支持C#、Delphi、VB、Python、JAVA语音进行调用,让您轻松实现会说话的程序。


    使用说明:
    1)ttsPlayer.dll为java程序专用,ttsVoicer.dll为标准接口可供C#、Delphi、VB、Python等程序调用;我们还为您制作了多个程序开发语言调用的DEMO。
    2)java程序时需将ttsPlayer.dll拷贝到你的java项目的bin目录下,在您的程序(VoiceTextPlayer.java)里调用该接口,例子如下:

    //VoiceTextPlayer.java
    //ttsDemo.jar为JAVA版本的Demo

    package com.suprui.action;

    public class VoiceTextPlayer {
    //调用动态链接库
    static{
    System.loadLibrary("ttsPlayer");
    System.gc();
    }
    public native int ReadText(String PalyStr,int TypeID); //PalyStr-文字,TypeID-0=英文,1=中文
    public native int PlayFile(String FileName);//FileName-音频文件的路径及名称
    public static void main(String[] args) {
    VoiceTextPlayer hw = new VoiceTextPlayer();
    int x=hw.ReadText("欢迎您使用我们的语音接口!",1);
    if(x==1){
    System.out.println("OK");
    }
    else{
    System.out.println("NO");
    }
    int y=hw.PlayFile("ding.wav");
    if(y==1){
    System.out.println("OK");
    }
    else{
    System.out.println("NO");
    }
    }
    }

    3)其他程序调用时,使用ttsVoicer.dll拷贝至程序运行的目录下,下面是C#程序调用该接口,例子如下:

    //Program.cs
    //ttsDemo.exe为C#版本的Demo

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;

    namespace VoiceTextPlayer
    {
    class Program
    {
    [DllImport("ttsVoicer.dll", EntryPoint = "ReadText")]
    static extern int ReadText(string PalyStr, int TypeID); //PalyStr-文字,TypeID-0=英文,1=中文
    [DllImport("ttsVoicer.dll", EntryPoint = "PlayFile")]
    static extern int PlayFile(string FileName);//FileName-音频文件的路径及名称

    static void Main(string[] args)
    {
    int x= ReadText("欢迎您使用我们的语音接口!", 1);
    if (x == 1)
    {
    Console.WriteLine("OK");
    }
    else {
    Console.WriteLine("NO");
    }
    int y = PlayFile("ding.wav");
    if (y == 1)
    {
    Console.WriteLine("OK");
    }
    else
    {
    Console.WriteLine("NO");
    }
    Console.ReadLine();
    }
    }
    }

    联系信息:
    1)如您需要使用我们的接口程序,请与我们联系,QQ:983550041 Tel:025-66654879 MP:13655167760;
    2) 如需购买我们的正式版接口,请使用Suprui CMCS.exe工具可获取机器码;
    3)该程序版权归南京超锐信息技术有限公司所有,转载请保留该文件。
    展开全文
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
  • Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
  • 该DLL是通过调用Windows语音合成引擎(SPEECH SYNTHESIS ...另外还支持播放音频文件(.wav,.mp3等),文字音频文件混,目前我们开发的DLL支持C#、Delphi、VB、Python、JAVA语音进行调用,让您轻松实现会说话的程序
  • 最近安卓项目开发中遇到一个问题,在使用百度语音合成的功能时,因为文章里面带有拼音注解,导致文字和拼音被重复了一遍。 中国人民(zhōng guó rén mín ) 现在的需求是需要识别文章中的汉语拼音,然后去掉...

    最近安卓项目开发中遇到一个问题,在使用百度语音合成的功能时,因为文章里面带有拼音注解,导致文字和拼音被重复读了一遍。

    中国人民(zhōng guó rén mín )
    

    现在的需求是需要识别文章中的汉语拼音,然后去掉,不让文章拼音被语音合成。那么问题就出现了:Java如何通过代码识别字符串是否是汉语拼音,还是英文单词?

    比如:中国人民,这个汉语拼音是zhōng guó rén mín,但是如果写成了zhong guo ren min,经过百度翻译之后的读音是完全不一样的。
    

    我们的实现思路:

    1)从字符源头控制住,就是把文章中带拼音标准的地方通过特殊的标识进行切割掉。存在问题:无法确定拼音的切割标识,比如使用括号等方式,编辑无法统一。
    2)通过识别字符的编码方式判断字符是不是拼音?还是普通的英文拼音字符或者是中文拼音字符来判断是否进行字符切割。
    

    大概就是上面的两种实现思路,但是第一种因为编辑部门可能编辑会出现不同的拼音的标识,导致我们无法控制内容,所以只能舍弃。只能通过代码的手段来判断字符串是拼音还是英文字符。
    说到拼音,我们就不得不引入一个概念:注音符号。注音符号就是带声调的中文拼音字符。

    /**
     * 字符转化工具类
     */
    public class Snippet {
        public static void main(String[] args) {
            String cn = "ā";
            String unicode = "\\u101";
            String ch = "a";
            String charA = "\\u61";
    
            System.out.println(cnToUnicode(cn));
            System.out.println(unicodeToCn(unicode));
            System.out.println(cnToUnicode(ch));
            System.out.println(unicodeToCn(charA));
            // 字符串 : \u5f00\u59cb\u4efb\u52a1 ,由于 \ 在java里是转义字符,要写出下面这种形式
        }
    
        private static String unicodeToCn(String unicode) {
            /** 以 \ u 分割,因为java注释也能识别unicode,因此中间加了一个空格*/
            String[] strs = unicode.split("\\\\u");
            String returnStr = "";
            // 由于unicode字符串以 \ u 开头,因此分割出的第一个字符是""。
            for (int i = 1; i < strs.length; i++) {
                returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
            }
            return returnStr;
        }
    
        private static String cnToUnicode(String cn) {
            char[] chars = cn.toCharArray();
            String returnStr = "";
            for (int i = 0; i < chars.length; i++) {
    
                returnStr += "\\u" + Integer.toString(chars[i], 16);
            }
            return returnStr;
        }
    }
    

    在这里插入图片描述
    我们通过调研发现Unicode编码格式,把注音符号和英文拼音字母通过唯一的字符集构成,也就是说注音符号英文26个字母通过转化成unicode字符,都是唯一的。因为我们的文章是中文,转成unicode之后发现注音符号和汉语拼音字符编码都是唯一的,所以我们可以判断一个字符里面是否有注音符号来判断这个字符串是汉语拼音还是英文字符。
    Unicode 和 UTF-8 有什么区别?
    但是还有一个问题就是如果文章里面的汉语拼音是不带注音字符的字符集,那么我们通过比对单个字符发现不存在注音符号就会把它识别成英字符,导致识别失败。

    最终问题:如何解决文章拼音不带注音符号导致无法识别成汉语拼音?
    

    我们可以通过判断字符里面是否有注音符号来判断字符是不是拼音,但是如果字符串中不带注音符号就会识别失败。
    所以目前可以通过工具类删除文章括号里面的内容,工具类代码如下:

     private static String deleteSpecialString(String sourceStr){
            do{
                int fristIndex = 0, lastIndex =0;
                if(sourceStr.contains("(")){
                    fristIndex = sourceStr.indexOf("(");
                    lastIndex = sourceStr.indexOf(")");
                }else if(sourceStr.contains("(")){
                    fristIndex = sourceStr.indexOf("(");
                    lastIndex = sourceStr.indexOf(")");
                }
                String substring = sourceStr.substring(fristIndex, lastIndex+1);
                String replaceStr = sourceStr.replace(substring, "");
                sourceStr = replaceStr;
            }while (sourceStr.contains("(") || sourceStr.contains("(") );
            return sourceStr;
        }
    

    在这里插入图片描述
    上面的算法其实可以通过正则表达式来写:利用正则表达式提取括号内内容。
    但是这里有一个问题,就是括号里面的内容我们没有做判断,如果括号里面的内容是文字的话,是需要机读的。
    上面的是简单的做法,就是不判断文章括号里面的具体内容,都统一删除掉。但是我们如果需要做判断,文章括号里面的是拼音或者是英文。

    待解决问题:
    1)如何通过中文转成unicode字符码之后,判断字符是不是注音符号来判断字符是不是汉语拼音。
    2)是否有工具类可以把一长串的拼音字符,没有分割标识的情况下来正确的分割字符的拼音字符,比如:zhonghuarenmin,这个拼音字符串和chinesepublicpeople这两个字符串,如果正确的分割?
    

    百度语音可以正常的识别,等待解决!

    展开全文
  • 用户需要先使用其他输入法,或者系统内置的语音输入,输入想要转换的文字,然后一键即可立刻转换为火星文。输入法可以在线下断网环境使用,并且无需完全访问权限,保护你的隐私。“研表究明,汉字序顺并不一定影阅响...
  • 这个专栏是文字+语音,作者是王争,前 Google 工程师。他采用最适合工程师的学习方式,不拘泥于某一特定编程语言,从实际开发场景出发,由浅入深教你学习数据结构与算法的方法,帮你搞懂基本概念和核心理论,深入...
  • autoJS1688示例.zip

    2020-05-06 14:37:55
    离线文字语音~发声器.js 2018-05-16.js 2018年刑侦科推理题.js 2019-10-13蚂蚁森林.js 2048全自动(1).js 2048全自动.js 2048游戏机(1).js 2048游戏机(2).js 2048游戏机(3).js 2048游戏机(4).js 2048游戏...
  • Agent支持文字气球和输入提示条,在输出语音的同时把文字输出至一个卡通式文字气球中。 如果电脑系统中安装有Agent语音识别引擎,当用户按住输入键,如Scroll Lock键,在Agent 人物下方出现一个输入命令窗口,表示...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

java语音读文字

java 订阅