win7系统调用tts的语音朗读功能
windows的tts组件,正版系统或者win10系统是可以直接调用成功的,但win7有的是阉割版,有的不支持,调用的时候各种异常,网上的人各种抄袭,不知道所以然,还爱瞎bb,我就费了好大劲才完全搞清楚。
常见的异常有:
System.IO.FileNotFoundExceptionHResult=0x8007007EMessage=检索 COM 类工厂中 CLSID 为 {D9F6EE60-58C9-458B-88E1-2F908FD7F87C} 的组件失败,原因是出现以下错误: 8007007e 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。Source=System.SpeechStackTrace:在 System.Speech.Internal.ObjectTokens.RegistryDataKey..ctor(String fullPath, IntPtr regHandle)在 System.Speech.Internal.ObjectTokens.RegistryDataKey.Open(String registryPath, Boolean fCreateIfNotExist)在 System.Speech.Internal.ObjectTokens.SAPICategories.DefaultDeviceOut()在 System.Speech.Internal.Synthesis.VoiceSynthesis..ctor(WeakReference speechSynthesizer)在 System.Speech.Synthesis.SpeechSynthesizer.get_VoiceSynthesizer()在 System.Speech.Synthesis.SpeechSynthesizer.SpeakAsync(Prompt prompt)在 System.Speech.Synthesis.SpeechSynthesizer.SpeakAsync(String textToSpeak)
SampleTTSVoice,System.ArgumentException: 不能设置语音。未安装匹配的语音,或语音被禁用。在 System.Speech.Synthesis.SpeechSynthesizer.SelectVoice(String name)
开发语言可以使用C#,java,Python,或者微软的VBS,都可以,这几种语言的朗读代码网上都很好找,主要就是配置windows环境。
https://download.csdn.net/download/weixin_42209881/12844165
这是win7的tts修复包,下载下来直接安装,很简单。
修复好之后,就可以进行代码开发了,我以java为例,C#的和Python的可以留言,谁需要,找我要:
先下载一个这个jar包 : jacob.jar,
再下载一个dll库(32位和64位的注意区分):jacob-1.17-M2-x64.dll
这个dll库下载好之后要放在jdk和jre的bin目录下(jre的bin目录放不放不影响,但放上稳妥),就像这样
这些所有依赖我都放在了一起,可以一次下载下来:
下载链接:
https://download.csdn.net/download/weixin_42209881/12857855
然后看java代码:
package com.zhang.test.speak;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class SpeakVoice {public static void main(String[] args) {System.out.println(args[0]);speak(args[0]);//strat("语音朗读的内容", 0);System.exit(1);}/*** * @Title: strat* @Description: 该方法的主要作用:朗读* @param @param content* @param @param type 设定文件 0:开始,1停止* @return 返回类型:void * @throws*/public static void strat(String content, int type) {//这个Sapi.SpVoice是需要安装什么东西吗,感觉平白无故就来了ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");// Dispatch是做什么的?Dispatch sapo = sap.getObject();if (type == 0) {try {// 音量 0-100sap.setProperty("Volume", new Variant(100));// 语音朗读速度 -10 到 +10sap.setProperty("Rate", new Variant(1.3));Variant defalutVoice = sap.getProperty("Voice");Dispatch dispdefaultVoice = defalutVoice.toDispatch();Variant allVoices = Dispatch.call(sapo, "GetVoices");Dispatch dispVoices = allVoices.toDispatch();Dispatch setvoice = Dispatch.call(dispVoices, "Item",new Variant(1)).toDispatch();ActiveXComponent voiceActivex = new ActiveXComponent(dispdefaultVoice);ActiveXComponent setvoiceActivex = new ActiveXComponent(setvoice);Variant item = Dispatch.call(setvoiceActivex, "GetDescription");// 执行朗读Dispatch.call(sapo, "Speak", new Variant(content));} catch (Exception e) {e.printStackTrace();} finally {sapo.safeRelease();sap.safeRelease();}} else {// 停止try {Dispatch.call(sapo, "Speak", new Variant(content), new Variant(2));} catch (Exception e) {System.out.println(e.getMessage());e.printStackTrace();}}}public static void speak(String text) {ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice"); try { // 音量 0-100 sap.setProperty("Volume", new Variant(100)); // 语音朗读速度 -10 到 +10 sap.setProperty("Rate", new Variant(0)); // 获取执行对象 Dispatch sapo = sap.getObject(); // 执行朗读 Dispatch.call(sapo, "Speak", new Variant(text)); // 关闭执行对象 sapo.safeRelease(); } catch (Exception e) { e.printStackTrace(); } finally { // 关闭应用程序连接 sap.safeRelease(); } }}
那个下载包里的speak.jar就是我这些代码生成的工具jar包,可以直接调用:
像这样,运行后,就听到响亮的朗读声音了
有什么不到之处,欢迎大家下方留言,讨论
win7系统调用tts的语音朗读功能相关推荐
- 关于Google翻译和语音朗读功能无法正常使用的说明
关于Google翻译和语音朗读功能无法正常使用的说明 2022年10月1日,Google突然停止了Google翻译在中国大陆的业务,不再向中国大陆区域提供翻译服务,官方给出的理由是"因为使用 ...
- html增加语音朗读功能,给wordpress主题添加上语音播放文章内容文本朗读功能
摘要:大挖最近在淘wp主题的时候发现一款主题已经支持了语音朗读功能7b2,大挖一直关注的一些产品和运营网站也陆续上线了语音播放... 大挖最近在淘wp主题的时候发现一款主题已经支持了语音朗读功能7b2 ...
- 网页实现文字转语音朗读功能
使用HTML5的Speech Synthesis API能简单实现语音合成,并进行播报,实现代码如下: <!DOCTYPE html> <html lang="en&quo ...
- android 朗读读屏幕,android语音朗读功能demo实现
简单的文本语音朗读功能实现 实现这个功能主要用一个类,是TextToSpeech,废话不都少,直接上代码.总的来说效果一般,短语的停顿节奏不是很好. 界面很简单,一个Button ,一个EditVie ...
- python3语音朗读功能
python3有一个开源库可以支持语音朗读,对中文和英文都有很好的支持 运行前需要下载VS 2019把C++环境配置好和pip install pyttsx3 import pyttsx3 engin ...
- 非常简单的语音朗读功能
不知道大家有没有发现,在System.Speech.Synthesis命名空间下有一个SpeechSynthesizer类,它可以指定的文本内容进行语音朗读,而且,这个类用起来也严重简单,简单到什么程 ...
- 如何在Electron中打造实现语音合成播放,让Windows自带TTS助你实现离线流畅语音播报语音朗读功能
使用Electron和Windows自带TTS进行语音合成播放 const path = require('path'); const { spawn } = require('child_proce ...
- C++实现TTS文字语音朗读Microsoft Speech SDK
转自http://www.zhimax.com/article/vc/ttsvoice.html 一. TTS概述 随着语音技术的发展,微软也推出了相应的语音开发工具,即Microsoft Speec ...
- TTS(TextToSpeach)语音朗读实例
2019独角兽企业重金招聘Python工程师标准>>> package cn.captain.texttospeach;import java.util.Locale; import ...
最新文章
- php怎么实现自动售货,PHP自动化售货发卡网源码+教程
- Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)
- 良心直播!看完你的Python入门基础就妥了!
- Tensorflow【实战Google深度学习框架】全连接神经网络以及可视化
- socket层内容详解二
- Ubuntu9.10下安装Thinkpad T400 R29无线网卡
- java电话计费系统_java 连接数据库开发的电话计费管理系统
- java巴特沃斯滤波器编程_巴特沃斯(Butterworth)滤波器 (1)
- mysql workbench画E-R图,并根据E-R生成sql(步骤超完整)
- 学习响应式BootStrap来写融职教育网站,Bootsrtap第八天轮播图js特效
- 数据结构-判断一棵树是否为二叉排序树
- 用ISAPI Filter设置HttpOnly属性
- 中文验证码识别 java_opencv Tesseract 验证码识别 文字识别
- [转载]java对cookie的操作
- ExecuteScalar的使用
- [转]关于管理的经典故事(员工激励)
- 【飘儿菜】-Matplotlib-绘制饼图
- ERP收付款的操作与设计--开源软件诞生22
- Netty源码解析(八)之Recycler
- xshell如何将Windows文件上传到linux