
霸道老板
华为是最近科技界最火的公司,自5月15日美国商务部将其列入“实体清单”以来,华为一直处于争议中心,信中“备胎”转“正”!,掀起了关于自研芯片的讨论热潮。在即将上任的老板公开讲话中,他表示,美国的举动无法动摇华为的根基,只能暂时改变华为的发展势头。随后,谷歌停止与华为合作的消息,让我们更加担心华为手机等移动设备在欧美市场的表现。最近,所谓的“ARM断资金来源”事件频出,让大家对此前海思的B计划产生了怀疑。一身冷汗的任正非参加了央视《面对面》节目,在接受董倩专访时,他丝毫没有谈及压力,整个讨论都围绕着一个国家富强在小学教师的讲台上实现的主题展开。这150分钟的视频让我感觉自己只是一个为祖国未来的教育事业努力拼搏的老人,非常佩服任先生在21日问答环节说的一句话:
华为是一家商业公司,消费者喜欢华为产品可以用,不喜欢就不用,华为产品不应该跟政治挂钩。
听到这句简单的话,我第一感觉,这就是一个创业者该有的勇气。面对来自国家的压力,我保持冷静。激动之余,我拿出了Mate 20X,再看着桌上老婆正在充电的Mate 20,心里默默说,我已经尽力了……不管这场风波最终结果如何,我们可以关注、讨论,但请保持冷静。
任总在 GitHub 上的演讲
最近各大公众号都在讨论,GitHub 上一个名为 benmahr 的用户上传了任正非从 1994 年到 2018 年的 400 多篇演讲。但我根据 URL 搜索链接时,作者已经删除了该项目。幸好有用户克隆了该项目,让我可以搜索下载这些文章。看到这些文章都以 .md 结尾,而且普遍排版风格单一,我猜他们应该也是友好的 Python 爬虫大军吧。至于我为什么要转换成 MD 格式,可能是因为 GitHub 上程序员都痴迷于文本类型吧。我用 Markdown 编辑器打开了几篇文章,这里省略了对华为的赞美,不然大家都以为我是推手。。。不得不说,在任总的演讲中,在他朴实的话语中,能感受到他一步步带领华为走向今天的成功。也许这位朋友只是觉得内容可能会让美国人分析出点什么,所以就删掉了。我想是的。看了这么多文章,感觉就像在看一连串励志名言、名人名言。但我坐不住,看一会儿就困了。400多篇文章,我担心一篇一篇看完要花多长时间。想了想,我想出了一个办法。
懒人听书?
作为巨昌的合作公司,任正非在2019年的第一封邮件讲话中表示,华为今年将全面提升工程能力,聚焦产品质量。针对这次邮件讲话,公司要求各部门认真学习。当时我灵机一动,用Python用结巴分析了文章的词频,最后把文章转化成语音分享给了同事,回想起这件事,我想,我也可以用同样的办法把400多篇文章转化成MP3文件,放在手机里,上下班途中慢慢听?现在就动手!
语音识别
使用 Python 实现语音识别的方法有很多种。
1.使用Python的win32common模块直接调用Windows系统的语音朗读文章,不用想了……
2.使用pyttsx3(pyttsx for python2)模块,但该模块虽然包含了很多设置,但发音还是基于Windows系统原生的语音,没有之前那么生硬,但还是不够好听。
3.使用API接口识别!
百度语音识别API:Baidu-AIP是百度开放的一项公共语音转换服务,您只需在百度注册相关APP及密钥信息即可使用。

使用流程如下:
1.访问语音合成-百度AI开放平台:
2.然后你就可以使用你的百度账号登录了(如果你没有百度账号,可以自行注册一个)
3. 创建应用程序,添加语音识别功能并完成注册
4.保存你的app_id、API_Key、Secret_Key以供后续使用
5.切换回语音合成首页,点击立即使用旁边的技术文档按钮,进入API文档
6. 找到语音合成-->SDK文档-->Python SDK查看详细开发文档


接下来我们看一下文档中的相关说明:
-接口说明
基于此接口,开发者可以轻松获得语音合成能力。
- 请求说明
合成文本的长度必须小于1024字节,如果文本较长,可以分多次请求,文本长度不能超过限制,例如将文本合成语音文件:
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('你好百度', 'zh', 1, {
'vol': 5,
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
上述代码中,常量APP_ID是在百度云控制台中创建的,常量API_KEY和SECRET_KEY是应用创建后系统分配给用户的字符串,用于识别用户,并进行访问签名验证。在服务控制台中查看应用列表。
参数类型说明是否必填?
特克斯
细绳
合成的文本采用UTF-8编码,请注意文本长度必须小于1024字节。
是的
库伊德
细绳
用户唯一标识,用于区分用户,填写机器MAC地址或者IMEI码,长度在60以内
不
社保
细绳
语速,取值范围0-9,默认为5
不
坑
细绳
音调,值范围0-9,默认为5
不
卷
细绳
音量,取值范围0-15,默认为5
不
每
细绳
说话人选择,0为女声,1为男声,3为情绪合成-杜小妖,4为情绪合成-杜娅娅,默认为普通女声
不
将 markdown 转换为文本
由于这些演讲都是以MD结尾的文章,所以我们首先需要将这些文章转换成文本,然后才能进行相关的转换操作。
之前私下也用过python操作过markdown,不过都是基于HTML与MARKDOWN之间的转换,从来没有试过直接转换成文本。
能不能先转为HTML,然后通过requests解析本地的HTML,最后再获取内容?太麻烦了……
我们先来看一下简书里markdown的语法:
# 一级标题
## 二级标题
##### 五级标题
- 列表第一项
- 列表第二项
1. 有序列表第一项
2. 有序列表第二项
[标题](链接地址)

*斜体*
**粗体**
> 引用段落
我们可以使用正则表达式来过滤这些语法吗?
最麻烦的就是链接和代码块
>>> test='测试:你[图片上传失败...(image-516d3b-1558963315309)]好[https://abc123.com](https://abc123.com)啊'
>>> re.sub(r'!?\[[^\]]+\]\([^\)]+\)','',test)
>>> '测试:你好啊'
然后将 # -> * 匹配在一起
至于代码块,请放心,它不存在......
最终的:
re.sub(r'!?\[[^\]]+\]\([^\)]+\)|[\#\-\>\*]*','',测试)
最终代码
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/5/27 20:20
# @Software : PyCharm
# @version :Python 3.6.8
# @File : speech.py
import os
import re
from aip import AipSpeech
import threading
import time
class FileToVoice:
"""
将用户指定的文件(夹)中的文本内容,转化为语音
"""
SIZE = 1024 # 百度aip单次转化长度限制
def __init__(self):
# AipSpeech秘钥,个人需单独修改...
app_id = ''
api_key = ''
secret_key = ''
self.client = AipSpeech(app_id, api_key, secret_key)
func = self.read_dir()
if func:
func()
def read_dir(self):
"""
判断路径类型
"""
if os.path.isdir(StartPath):
# 返回文件夹遍历方法
return self.ergodic_dir
elif os.path.isfile(StartPath):
self.change_file(StartPath)
else:
raise TypeError("未找到需要转化的文件(夹)...")
def ergodic_dir(self):
"""
百度API的转换速度基本为1000字12秒
启用多线程并发,加快转换速度。
"""
for root, dirs, files in os.walk(StartPath):
base_dir = os.path.join(SavePath, os.path.split(root)[1])
try:
os.mkdir(base_dir)
except FileExistsError:
pass
for file in files:
filepath = os.path.join(root, file)
t = threading.Thread(target=self.change_file, args=(filepath, base_dir))
t.start()
time.sleep(0.2)
def change_file(self, file, base_dir='', per=0):
try:
sem.acquire()
with open(file, 'r', encoding='utf-8') as f:
mp3 = bytes()
while True:
index = f.read(self.SIZE)
if not index:
break
_index = re.sub(r'!?\[[^\]]+\]\([^\)]+\)|[\#\-\>\*]*', '', index)
reult = self.client.synthesis(_index, 'zh', 1, {'vol': 5, 'per': per})
mp3 += reult
#获取文件名称并拼接MP3文件名
file_name = '%s.mp3' % os.path.splitext(os.path.split(file)[1])[0]
# 合并最终文件归档地址
mp3_file = os.path.join(base_dir, file_name)
with open(mp3_file, 'wb+') as t:
t.write(mp3)
print('系统已转换完成 %s ' % mp3_file)
except Exception as ErrorInfo:
print(ErrorInfo)
finally:
sem.release()
if __name__ == '__main__':
StartPath = r'D:\RenBossSpeech'
SavePath = r"F:\Speech"
try:
os.mkdir(SavePath)
except FileExistsError:
pass
sem = threading.Semaphore(5)
main = FileToVoice()
while threading.active_count() != 1:
pass
else:
print('### FileToVoice Jobs is over!!!###')
百度在线的转换速度基本是11秒1000字,代码开了5个线程,转换了400多篇文章花了好长时间……

查看我们的转换声音:

任正非先生近二十年来也一直关注教育,几乎每年的重要讲话中都会谈到教育的重要性。(如果需要经典演讲的音频,记得在公众号后台回复“音频”二字即可获取)
国家的未来在于教育
近日,任正非还接受了央视《面对面》栏目的专访。当前形势下,外界普遍关注华为危机。然而,整个采访过程中,他不谈华为,而是谈教育,并表示:
华为是“不死的华为”
他表示,真正需要关注的是基础教育。他认为,从华为遭遇美国禁令,到近期中美贸易摩擦不断升级,本质是科技实力的较量,根本问题还是教育水平。

国家的未来在教育,国家再穷也不能缺教师。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.fwsgw.com/a/xinling/203530.html
