@

前言

本次的实现需求有点困难,所以也就记录下来,别到时候都忘了。



首先先不说正题,有兴趣的可以看一看

1、目标是实现一个可以传一个文本就返回一个语音的接口..

2、开始的时候,以为可以直接在java后台直接集成就好了,结果找了半天,找到最多的还是jacob实现文本转语音,虽然感觉可行,但是我的这个项目原本就是需要部署到liunx系统上的,可这个jacob貌似只能在window系统上可行,在liunx系统上不行,所以不能因小失大啊。...

3、所以就想找一个大公司的语言合成的sdk,看行不行...结果像百度、讯飞、华为、阿里等产品,大部分都是在线接口服务,当我满怀喜悦的心情看到了一个叫java SDK的时候,然后兴冲冲的看文档,然后兴冲冲的仰天长望...,后来就是知道了,这个sdk还是去连接第三方api的,只不过可以集成到java中而已。

4、接下来,我又讯飞的产品中找到了有关离线SDK的信息,只不过还是没得java,只有window、liunx、ios、安卓的一些离线SDK。哎,罢了,罢了,就试一试把,我尝试了liunx系统的SDK,结果还行,只不过得运行shell脚本之类的编译操作(可行)。

5、最后,决定彻底改变思路,不用java方式集成进原先的项目中了,直接新开辟一个python项目得了。然后就找啊,找啊,结果python使用pyttsx3实现文本转语音还是挺简单的。(可行)

6、不过,还是那样,因为好像使用的是window中的语言播报功能,所以无法部署到Liunx服务器上,如果实在要部署的话是需要往服务器上部署好一个叫espeak的语言播报驱动,只不过我暂时不在这里说了,因为我暂时也没搞,不过通过查找到了大量资料,安装espeak 的最锲合的系统是"乌班图"的系统,像centos7之类的就很麻烦!(我就是)

7、为什么说centos7的很麻烦呢,其实跟apt 命令有关,centos7无法使用apt命令,而通过我找到的资料来说espeak 的快捷安装又跟apt有关,如果没有apt的话,像centos7就只能通过手动编译来按照espeak(:因为centos不属于debian系列,所以不能使用,只有乌邦图才能使用。),然后就...所以如果大家有需要可以去尝试,centos7和“乌班图”系统的安装espeak不太一样。

后面应该还会写如何使用centos7来实现语言播报的吧,要不然我就会之前使用window算了。


安装pyttsx3

为了给你们省事,源都给你们备好了

pip install pyttsx3 -i http://pypi.douban.com/simple

其实,python下载模块贼简单,他报个啥 啥模块找不到,那找不到就找不到呗,那就install下不就o了


实现TTS接口

别说了,上代码

from flask import Flask

import pyttsx3
import time
from flask import Flask, render_template, redirect, jsonify, send_file,request app = Flask(__name__) @app.route('/voice')
def Text_To_Speek():
str = request.args['str'];
t = time.time() engine = pyttsx3.init() # 设置新的语音速率
engine.setProperty('rate', 200) # 设置新的语音音量,音量最小为 0,最大为 1
engine.setProperty('volume', 1.0)
# 获取当前语音声音的详细信息
voices = engine.getProperty('voices') print(f'语音声音详细信息:{voices}')
# # 设置当前语音声音为女性,当前声音不能读中文
# engine.setProperty('voice', voices[1].id)
# 设置当前语音声音为男性,当前声音可以读中文
engine.setProperty('voice', voices[0].id) # 语音播报内容
content = str
# 输出文件格式
outFile = f'./static/{t}.mp3'
print(outFile) engine.save_to_file(content, outFile)
engine.runAndWait()
engine.stop() return send_file(f"./static/{t}.mp3"); @app.route('/')
def hello_world(): return "hello world"; if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug='true')

接口参照以下代码:

参照https://www.cnblogs.com/liumengsong/p/12199017.html


import pyttsx3
# 创建对象
engine = pyttsx3.init()
# 获取当前语音速率
rate = engine.getProperty('rate')
print(f'语音速率:{rate}')
# 设置新的语音速率
engine.setProperty('rate', 200)
# 获取当前语音音量
volume = engine.getProperty('volume')
print(f'语音音量:{volume}')
# 设置新的语音音量,音量最小为 0,最大为 1
engine.setProperty('volume', 1.0)
# 获取当前语音声音的详细信息
voices = engine.getProperty('voices') print(f'语音声音详细信息:{voices}')
# 设置当前语音声音为女性,当前声音不能读中文
engine.setProperty('voice', voices[1].id)
# 设置当前语音声音为男性,当前声音可以读中文
engine.setProperty('voice', voices[0].id)
# 获取当前语音声音
voice = engine.getProperty('voice')
print(f'语音声音:{voice}') # 语音播报内容
content = "你好亚"
# 输出文件格式
outFile = './out.mp3' # # 语音文本
# path = 'test.txt'
# with open(path, encoding='utf-8') as f_name:
# words = str(f_name.readlines()).replace(r'\n', '')
# 将语音文本说出来
engine.save_to_file(content, outFile)
engine.say(content)
engine.runAndWait()
# 将文字输出为 aiff 格式的文件
engine.stop()

后言



ok,pyttsx3的使用就结束了,只不过不知道大家有没有发现我的重点嘛~

我这篇博客也只是把我一路的解决方法记录下来的

其实现在这个项目确实是可以跑起来的,只不过后续部署上没什么更好的想法。

一路下来,也翻了很多博客,以后有进展了再写其他的吧。

不过,如果有更厉害的大佬的话,不妨给我指教指教呗.0-0

【TTS】文本转语音?如何不调用第三方api来实现,使用pyttsx3的更多相关文章

  1. vue 服务代理 调用第三方api

    项目中前期需要调用第三方API来获取汇率.因为直接调用会有跨域的问题,所以使用来服务代理. 在config配置代理可以这样写: 而调用接口就可以这样写: 坑:配置完成后一直报500,开始怀疑人生.最后 ...

  2. Java 代码中如何调用 第三方Api

    在代码中调用第三方API 获取数据 package com.example.demo.utils; import com.alibaba.fastjson.JSONObject; import lom ...

  3. windows文本转语音 通过java 调用python 生成exe可执行文件一条龙

    我已记不清 我失败过多少次 ,找过多少资料 ,但是功夫不负有心人 ,还是成功了. 所有资料和需要的语音模块的资料以放置在文章末尾, 有些是引用别人的博客的部分内容, 原文是在有道云笔记,所以没有图,请 ...

  4. tts文本转语音服务

    1. 谷歌tts http://translate.google.cn/translate_tts?ie=UTF-8&tl=zh-CN&q=谷歌 2. 百度tts http://tts ...

  5. iOS调用第三方API/Framework

    前言 老板不止一次地说过:这个世纪靠个人的能力去完成一件事情肯定是不够的.无论什么方面我们都可以找到许许多多的事例表明合作共赢的重要性,例如Linux的发展.建筑事务所的发展.乃至科学技术的发展等等. ...

  6. 如何更优雅地对接第三方API

    本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程 ...

  7. iOS 文本转语音(TTS)详解:Swift

    上一篇博客讲解了iOS的speech FrameWork语音识别的功能:http://www.cnblogs.com/qian-gu-ling/p/6599670.html,对应的这篇博客就写一下文本 ...

  8. 用TTS实现文本转语音

    最近被toefl单词虐成狗::>_<:: 想做一个可以自动把单词转成语音的软件,这样就可以在路上戴耳机边走边听啦~ 用微软的TTS语音库可以很容易地实现.早期的TTS要想实现中英文混合朗读 ...

  9. FreeSWITCH调用第三方TTS 使用tts_commandline

    FreeSWITCH 支持调用第三方TTS命令,本身已经搭好了框架,只需要配置即可用. 下面写一下步骤,以免忘记,也希望给你带来帮助. 第一步:编译模块mod_tts_commandline,并加载. ...

随机推荐

  1. [jvm] -- 类加载过程篇

    类加载过程 系统加载 Class 类型的文件主要三步 加载 通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class对象, ...

  2. 题解 CF510E 【Fox And Dinner】

    可以用网络流解决这个题. 注意到\(a_i \geqslant 2\),所以当相邻数字要和为质数时,这两个数要一个为奇数,一个为偶数. 所以就先将所有数按奇偶分为两列,其就构成了一个二分图,二分图中和 ...

  3. java并发编程[持续更新]

    目录 java并发编程 1.常用类介绍 Semaphore 2.名词解释 2.1 线程安全 2.2 可重入锁和不可重入锁 java并发编程 1.常用类介绍 Semaphore Semaphore 类是 ...

  4. JWT生成Token做登录校验

    一.JWT的优点 1.服务端不需要保存传统会话信息,没有跨域传输问题,减小服务器开销. 2.jwt构成简单,占用很少的字节,便于传输. 3.json格式通用,不同语言之间都可以使用. 二.使用JWT进 ...

  5. 对‘sqrt’未定义的引用

    首先, 引用数学库 #include<math.h> 引用数学库时,要在编译后加上-lm 是每一个都要加!! 如下: gcc su.c -o su.o -lm gcc -g  su.c - ...

  6. 微服务迁移记(五):WEB层搭建(1)

    WEB层是最终表现层,注册至注册中心,引用接口层(不需要引用实现层).公共服务层.用户登录使用SpringSecurity,Session保存在redis中,权限管理没有用SpringSecurity ...

  7. 五天一体_企业权限管理(SSM整合)

    学于黑马程序员和传智播客联合做的教学项目 感谢 黑马程序员官网 传智播客官网 个人根据教程的每天的工作进度的代码和资料 密码:cti5 b站在线视频 微信搜索"艺术行者",关注并回 ...

  8. pandas_查看数据特征和统计信息

    # 查看数据特征和统计信息 import pandas as pd # 读取文件 dataframe = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Pyth ...

  9. PHP fileowner() 函数

    定义和用法 fileowner() 函数返回指定文件的用户 ID(所有者). 如果成功,该函数返回用户 ID.如果失败,则返回 FALSE. 语法 fileowner(filename) 参数 描述 ...

  10. PDOStatement::fetchAll

    PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)高佣联盟 www.cgewang.c ...