热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

语音识别,文本转语音,语音转文本

1.语音合成.百度AipSpeech:synthesis():1:与合成语音的文本.2.语言.3.客户端类型,14.option{语音合成参数}:

 

1. 语音合成.
	百度AipSpeech:
	synthesis():
		1: 与合成语音的文本.
		2. 语言.
		3. 客户端类型,1 
		4.option{语音合成参数}: pit 声调  spd 语速 vol 音量 per cosplay 合成语音角色.
		
2. 语音识别
	百度 AipSpeech
		 asr():
			1. 音频文件流 
			2. 音频文件格式(pcm)
			3. 音频采样率(16000, 8k/16k)
			4. option{识别语种}: dev_pid :1537  包含简单英文的普通话识别. 
		
		录音文件基本上没有直接pcm格式,需要对音频文件进行转换.
		ffmpeg:FFmpeg公司.涉及audio 处理的基本上都用它了.
		通过os.system(FFmpeg_cmdstr)得到新的pcm文件.
		

 

1.  百度注册账号.

 

案例1 .文本转语音

from aip import AipSpeech
from aip import AipNlp
from uuid import uuid4
import setting
import os

APP_ID = "11562884"
API_KEY = "9iOLKP9VCo4nsEf3N8dcOUmT"
SECRET_KEY = "aW0kwOHFbHrQely6bcmGTzU49t2jOYdL"

baidu_client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
baidu_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)

#.1 文本转语音.
def text2audio(text):

    file_name = f"{uuid4()}.mp3"
    print("filename:%s"%file_name)
    file_path = os.path.join(setting.AUDIO_FILE_PATH, file_name)
    print("file_path:%s" %(file_path))
    res = baidu_client.synthesis(text, "zh", 1, {
        "vol": 5,
        "pit": 7,
        "spd": 4,
        "per": 4
    })

    if type(res) == dict:
        return res

    with open(file_path, "wb") as f:
        f.write(res)

    return file_name

print(text2audio("强哥威武"))

打印结果:

filename:86375f56-f42d-447a-9bcc-829d370ff805.mp3
file_path:audio\86375f56-f42d-447a-9bcc-829d370ff805.mp3
86375f56-f42d-447a-9bcc-829d370ff805.mp3

 

案例2.语音转文本.

def audio2text(file_name):
    file_pcm_path =os.path.join(setting.AUDIO_FILE_PATH,file_name)
    cmd_str =f"ffmpeg -y -i {file_pcm_path} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {file_pcm_path}.pcm"
    os.system(cmd_str)

    with open(f"{file_pcm_path}","rb") as f :
        audio_context =f.read()

    res =baidu_client.asr(audio_context,"pcm",16000,{"dev_pid": 1537})

    if res.get('err_no'):
        return res

    return res.get("result")[0]

print(audio2text("qiang.wma"))

 

案例3. 语音识别 NLP 

#.3 语音识别
def my_nlp(text):
    if baidu_nlp.simnet("你今年几岁了 ",text).get("score")>=0.72:
        print(baidu_nlp.simnet("你今年几岁了 ",text).get("score"))
        return "我今年73岁了,不然84岁也行"

    if baidu_nlp.simnet("你叫什么名字",text).get("score")>=0.72:
        return "我的名字叫做小嘿嘿"

    if baidu_nlp.simnet("你在哪里学习",text).get("score")>=0.72:
        return "我在学习python"


print(my_nlp('你多大了'))  #结果:我今年73岁了,不然84岁也行

print(my_nlp("你的名字是")) #结果:我的名字叫做小嘿嘿

  

代码总结 :

from aip import AipSpeech
from aip import AipNlp
from uuid import uuid4
import setting
import os

APP_ID = "11562884"
API_KEY = "9iOLKP9VCo4nsEf3N8dcOUmT"
SECRET_KEY = "aW0kwOHFbHrQely6bcmGTzU49t2jOYdL"

baidu_client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
baidu_nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)

#.1 文本转语音.
def text2audio(text):

    file_name = f"{uuid4()}.mp3"
    print("filename:%s"%file_name)
    file_path = os.path.join(setting.AUDIO_FILE_PATH, file_name)
    print("file_path:%s" %(file_path))
    res = baidu_client.synthesis(text, "zh", 1, {
        "vol": 5,
        "pit": 7,
        "spd": 4,
        "per": 4
    })

    if type(res) == dict:
        return res

    with open(file_path, "wb") as f:
        f.write(res)

    return file_name
#
# print(text2audio("强哥威武"))



#.2 语音转文本.
def audio2text(file_name):
    file_pcm_path =os.path.join(setting.AUDIO_FILE_PATH,file_name)
    cmd_str =f"ffmpeg -y -i {file_pcm_path} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {file_pcm_path}.pcm"
    os.system(cmd_str)

    with open(f"{file_pcm_path}","rb") as f :
        audio_context =f.read()

    res =baidu_client.asr(audio_context,"pcm",16000,{"dev_pid": 1537})

    if res.get('err_no'):
        return res

    return res.get("result")[0]
#
print(audio2text("qiang.wma"))


#.3 语音识别
def my_nlp(text):
    if baidu_nlp.simnet("你今年几岁了 ",text).get("score")>=0.72:
        print(baidu_nlp.simnet("你今年几岁了 ",text).get("score"))
        return "我今年73岁了,不然84岁也行"

    if baidu_nlp.simnet("你叫什么名字",text).get("score")>=0.72:
        return "我的名字叫做小嘿嘿"

    if baidu_nlp.simnet("你在哪里学习",text).get("score")>=0.72:
        return "我在学习python"


print(my_nlp('你多大了'))  #结果:我今年73岁了,不然84岁也行

print(my_nlp("你的名字是")) #结果:我的名字叫做小嘿嘿
View Code

 

 

send_file 与audio标签.

py文件

from  flask  import Flask,request,send_file
import setting
import os

app =Flask(__name__)



@app.route("/getfile/")
def get_file(file_name):

    audio_file =os.path.join(setting.AUDIO_FILE_PATH,file_name)

    return send_file(audio_file)


if __name__ =="__main__":
    app.run()

 

html文件

"en">

    "UTF-8">
    




 

 


推荐阅读
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
author-avatar
先进的山楂4l4_519
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有