用微软语音合成技术开发TTS工具

TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分。因为最近的一个项目,需要把一些文本转换成语音,于是就有了这样一个小工具。基于微软语音的语音合成技术。可以从微软官网下载SDK。如有必要,请参考下面的实现。
初始化界面
ISpVoice * m _ pISPVoiceHRESULT HR=cocreate instance(CLSID _ sp voice,NULL,CLSCTX_ALL,IID_ISpVoice,(void * *)m _ pISPVoice);if(failed(HR)){ afxmessagebox(_ t(‘ TTS引擎初始化失败!’));return-1;}阅读故事代码:
int ctalkstorydlg : msspeak(LPCTSTR speak content){ if(m _ pISPVoice==NULL){ return-1;}int speed=m_ctrlSliderSpeed。get pos();m_pISPVoice-SetRate(速度);//在-10-10的范围内设置速度int volume=m _ ctrl slider volume . get pos();m _ pISPVoice-set volume((USHORT)volume);//在0-100范围内设置音量hresult HR=m _ pispvoice-speak(speak content,SPF _ async,null);if(FAILED(HR)){ return-1;}返回0;}将语音保存到WAV文件
int ctalkstorydlg : mssgetmp3(LPCTSTR speak content){ ISP voice * p voice=NULL;HRESULT HR=cocreate instance(CLSID _ sp voice,NULL,CLSCTX_ALL,IID_ISpVoice,(void * *)p voice);if(FAILED(HR)){ return-1;}if (pVoice!=NULL){ CComPtr cpWavStream;CComPtr cpOldStreamCSpStreamFormat originalFmtp voice-get output stream(cpOldStream);originalFmt。assign format(cpOldStream);HRESULT HR=SPBindToFile(m _ strOutputWavFile,SPFM_CREATE_ALWAYS,cpWavStream,originalFmt。FormatId(),originalFmt。WaveFormatExPtr());if(SUCCEEDED(HR)){ int speed=m _ ctrl slider speed。get pos();pVoice-SetRate(速度);//在-10-10的范围内设置速度int volume=m _ ctrl slider volume . get pos();p voice-set volume((USHORT)volume);//在0-100p voice-Set output(CPWAVStream,true)范围内设置音量;pVoice-Speak(speakContent,SPF_IS_XML,NULL);p voice-Release();pVoice=NULL返回0;} } return-1;}学习计算机基础知识的建议:
一、计算机网络我们使用的程序99%都离不开网络。作为一名程序员,我认为了解计算机网络是必要的。这门课程通常在大学课程中开设。在学习这门课程之前,我特别好奇。一台计算机如何向另一台计算机发送信息?比如:1。两台电脑之间没有连接,怎么给他发信息?2.世界上有那么多电脑,你怎么能找到有那个特点的电脑呢?有人说可以用MAC或者IP作为唯一标识,但是我有点疑惑。世界那么大,电脑那么多。有了这个标志,我们怎么才能找到他?遍历所有计算机?3.多个程序同时向一台计算机发送消息。计算机如何准确地将这些信息发送给这些不同的程序?4.如果发送的消息丢失了怎么办?总之很多问题是看了计算机网络之后豁然开朗的。我还写过一篇评价不错的文章:一篇文章读到一台计算机如何向另一台计算机发送数据。所以在这里,我强烈建议你学习一下。在面试中,计算机网络也是高频考点。在这里,我大致总结一下面试需要的一些协议和高频考点:1。http协议,包括:封装格式,常见的响应代码,不同版本的区别,常见的请求方法,潜在的安全风险,无状态协议等。2.https协议:http是明文传输,https是加密安全的。你需要知道https是如何加密的,数字证书是如何形成的,什么是对称加密和非对称加密。3.TCP协议:三次握手,四波,如何保证可靠传输,流量控制,拥塞控制。4.UDP:这只是一个大概的理解。好像内容比较少。5.DNS,ICMP,ARP,DHCP(我就不一一写了)。我认为这些协议更重要,尤其是在面试中。新手推荐视频:可以看韩老师讲的视频,搜索韩老师讲搞笑《计算机网络原理》就可以找到。推荐书籍《计算机网络:自顶向下》,《图解http》
二、操作系统操作系统也是很重要的知识,在面试中也被问的很多(当然根据公司不同,有些公司技术栈是Java,可能会问的少)。关于操作系统有很多需要学习的地方,比如:什么是进程,什么是线程,它们的本质区别是什么?当我们运行一个程序时,我们把数据放在哪里?代码在哪里?为什么非要堆来堆去?线程切换时的上下文是什么意思?虚拟地址是什么鬼?为什么线程需要这么多状态?什么是乐观锁和悲观锁?僵局是怎么造成的?有哪些化解死锁的策略?等一下。有人说学操作系统太他妈无聊了。真的很无聊,但是说实话,我还是学到了很多乐趣。感觉可以学习很多策略,一个比一个好。每次看完都会去。为什么我想不起来?我觉得,对于前期来说,需要多参考别人的策略,多看,有一定基础,逐步形成自己的策略。总之,读这些书,不仅要掌握这些知识点,更重要的是提高自己的思维逻辑。对于操作系统,我总结了以下几个核心的,比较容易在面试中被考验。1.流程的沟通方式(我写过一篇很好的文章:写一篇采访:流程之间有哪些沟通方式?——告别死记硬背)2。进程和线程到底是由什么组成的?有哪些数据?3.内存管理,包括:虚拟内存(重点)、分页、分段、分页系统地址映射和内存替换算法(重点)。4.死锁处理策略(死锁预防、死锁检测和恢复、死锁避免)5。进程调度算法6。磁盘寻道算法。我觉得以上更重要。如果你没学过,相信学了之后你能学到很多,知识点只是其中之一。推荐视频:没看过这个视频,所以想学的话,推荐去国内mooc大学找各大高校的课程,或者出国找相应的课程。推荐书籍:我看过的书都是《操作系统—精髓与设计原理(第八版)》,但是大佬们都推荐《深入理解计算机操作系统(原书第三版)》。我看过目录,感觉不错。这里也推荐这款。不过对于零基础的,我建议你可以先看一本小白的书《程序是如何跑起来的》。学操作系统挺无聊的。但是,只有啃下最难的部分,才能变得更强。
三。数据库(我这里用的是MySQL)在大学课程中,通常会开设一门数据库课程,但是这个数据库并不是针对某一种数据库语言的(例如MySQL,Oracle)。但是,我这里只说MySQL学习。别问为什么,问题是我翘了19/20的课。学好MySQL很重要。千万不要停留在知道怎么用的层面,要知道原理,尤其是对要面试的学生。每次被问到MySQL,我的信心都大大增加,因为虽然我不擅长写SQL,但是我知道很多原理。记得腾讯和shopee面试的时候,面试官好像对我印象深刻。好吧,我们不要吹了。这些也是一个强大的MySQL的重要性。下面说说我学过的一些知识和推荐的学习资料。关于Mysql还有很多要学的,比如1。SQL语句是如何执行的?你如何处理更新?2.索引是如何实现的?多个引擎的实现区别是什么?聚类索引、非聚类索引、二级索引、唯一索引、最左匹配原则等。(非常重要)3。事务相关性:例如,事务隔离是如何实现的?事务如何保证原子性?不同的事务如何看到不同的数据?每个事务都复制一个视图吗?MVCC的实现原理(重要)等等。4.各种锁,如表锁、行锁、间隙锁、共享锁和排他锁。这些锁主要用来解决什么问题?(重要)5。日志相关:redolog,binlog,undolog,这些日志的实现原理,以及如何解决问题?日志也很重要吧?有很多面试。6.数据库的主从备份,如何保证数据不丢失,如何保证高可用性等。还有一些需要了解的常用命令。我想,只要你知道以上的原则,对数据库调优会有很大的帮助。除了第六点,其他五点都是应届毕业生面试中出现频率极高的。推荐书籍:连sql都不会写的人,推荐《SQL必知必会》,再推荐《MySQL技术内幕:InnoDB存储引擎》。
四。数据结构和算法。我不想谈数据结构和算法。看我文章的人都知道,我写的文章80%都和数据结构和算法有关,重要性不言而喻。我在赵球最大的优势是对数据结构和算法的掌握。以上三门课程的学习基本都离不开数据结构。我觉得可以写一篇如何学习数据结构和算法的文章,这里就不写了。可以关注我的文章。明天写一篇算法相关的文章。面试上,我觉得操作系统,计算机网络数据库算法,这三个是问的最多的问题,所以我写的比较详细。对于学习计算机基础,如果不是为了面试,我觉得以下几点也是极其重要的。我告诉你,这是给那些急着面试的人准备的。可以重点关注以上四个。
5.组装。我觉得有时间学汇编很有必要。学习汇编可以更好地帮助我们了解计算机是如何处理程序代码的,比如寄存器和内存是如何使用的。循环、函数调用和数组是如何实现的?地址是什么?等一下。很多二进制代码可以反编译成汇编。如何组装它们可以帮助我们更好地理解一些东西。所以建议你学习编译,写一些程序。对于整理出来的资料,我可能没什么好推荐的,我自己也没怎么看过。我读过两本书。对于初学者,我建议看王爽的书《汇编语言(第三版)》,但这本书只适合初学者。如果想继续,可以阅读《汇编程序设计》。

其他教程

自动剪辑视频的软件免费(有没有自动剪辑视频的软件)

2022-8-29 14:27:39

其他教程

pr基本功能(pr常用功能)

2022-8-29 14:29:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索