首页 > 编程知识 正文

python百度语音合成(python怎么调用百度AI的语音合成功能?)

时间:2023-12-07 20:37:48 阅读:313162 作者:DGQD

本文目录一览:

  • 1、自己动手写Python进行文本转语音程序,共计11行代码
  • 2、python百度云AI语音合成参数怎么改
  • 3、如何用python调用百度语音识别
  • 4、如何优雅的用Python玩转语音聊天机器人
  • 5、Python语音合成(日文翻译)

自己动手写Python进行文本转语音程序,共计11行代码

1、首先安装Python程序推荐3.7

2、下载 pyttsx3库。

3、将需要转换的文本和程序放到一起。

4、运行程序就会朗读文本和保存文本朗读的语音文件。

以下是源代码:

import pyttsx3

with open ( 'word.txt' , encoding = 'utf-8' ) as obj:

line=obj.readline()

engine=pyttsx3.init()

rate=engine.getProperty( 'rate' )

engine.setProperty( 'rate' , 160 )

volume=engine.getProperty( 'volume' )

engine.setProperty( 'volume' , 0.6 )

engine.say(line)

engine.save_to_file(line, 'abc.mp3' )

engine.runAndWait()

python百度云AI语音合成参数怎么改

参数说明

per :发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声

spd:语速,取值0-15,默认为5中语速  

pit:音调,取值0-15,默认为5中语调  

vol:音量,取值0-15,默认为5中音量  

如何用python调用百度语音识别

#!/usr/bin/env python

# -*- coding: utf-8 -*-

########################################################################

#

# Copyright (c) 2017 aibot.me, Inc. All Rights Reserved

#

########################################################################

"""

File: util_voice.py

Author: darrenwang(darrenwang@aibot.me)

Date: 2017/03/24 11:29:50

Brief:

"""

import sys

import json

import time

import base64

import urllib

import urllib2

import requests

class BaiduRest:

def __init__(self, cu_id, api_key, api_secert):

self.token_url = ";client_id=%sclient_secret=%s"

self.getvoice_url = ";lan=zhcuid=%sctp=1tok=%s"

self.upvoice_url = ''

self.cu_id = cu_id

self.get_token(api_key, api_secert)

return

def get_token(self, api_key, api_secert):

token_url = self.token_url % (api_key,api_secert)

r_str = urllib2.urlopen(token_url).read()

token_data = json.loads(r_str)

self.token_str = token_data['access_token']

return True

#语音合成

def text2audio(self, text, filename):

get_url = self.getvoice_url % (urllib2.quote(text), self.cu_id, self.token_str)

voice_data = urllib2.urlopen(get_url).read()

voice_fp = open(filename,'wb+')

voice_fp.write(voice_data)

voice_fp.close()

return True

##语音识别

def audio2text(self, filename):

data = {}

data['format'] = 'wav'

data['rate'] = 8000

data['channel'] = 1

data['cuid'] = self.cu_id

data['token'] = self.token_str

wav_fp = open(filename,'rb')

voice_data = wav_fp.read()

data['len'] = len(voice_data)

#data['speech'] = base64.b64encode(voice_data).decode('utf-8')

data['speech'] = base64.b64encode(voice_data).replace('n', '')

#post_data = json.dumps(data)

result = requests.post(self.upvoice_url, json=data, headers={'Content-Type': 'application/json'})

data_result = result.json()

print data_result

return data_result['result'][0]

def test_voice():

api_key = "SrhYKqzl3SE1URnAEuZ0FKdT"

api_secert = "hGqeCkaMPb0ELMqtRGc2VjWdmjo7T89d"

bdr = BaiduRest("test_python", api_key, api_secert)

#生成

start = time.time()

bdr.text2audio("你好啊", "out.wav")

using = time.time() - start

print using

#识别

start = time.time()

#result = bdr.audio2text("test.wav")

#result = bdr.audio2text("weather.pcm")

using = time.time() - start

print using, result

return True

if __name__ == "__main__":

test_voice()

如何优雅的用Python玩转语音聊天机器人

所需硬件:

树莓派B+

人体红外线感应模块

内置麦克风摄像头(实测树莓派免驱淘宝链接)

申请API:

百度语音api

图灵api

语音聊天机器人实现原理:当有人来到跟前时--》触发聊天功能,开始以每2s检测录制语音--》通过百度语音api合成文字--》传递给图灵api返回回答信息--》通过百度语音合成播放

【人体感应识别部分Python代码renti.py】

123456789101112131415161718192021222324252627282930313233

#/usr/bin/python#coding:utf-8import RPi.GPIO as GPIOimport timeimport osimport signalimport atexitGPIO.setmode(GPIO.BCM) GPIO_PIR = 14 GPIO.setup(GPIO_PIR,GPIO.IN) # Echojing = 0dong = 0 sum = 0sum1 = 0oldren = 0sleep = 0def ganying(): i = 0 ok = 0 error = 0 while i 10: if GPIO.input(GPIO_PIR) == 1 : ok = ok + 1 if GPIO.input(GPIO_PIR) == 0 : error = error + 1 time.sleep(0.01) i = i + 1 ren = ok/(error+1) return ren

1

GPIO_PIR = 14

为 红外线检测模块与树莓派的针脚,脚本函数返回0表示无人,0 为有人

【Python语音识别聊天部分robot.py】

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112

#/usr/bin/python# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding( "utf-8" )import urllibimport urllib2import jsonimport uuidimport base64import osimport timefrom renti import * #获取百度tokenappid=7647466apikey="百度API"secretkey="百度API" baidu_url="h.com/oauth/2.0/token?grant_type=client_credentialsclient_id=" + apikey + "client_secret=" + secretkey; y_post=urllib2.urlopen(baidu_url)y_read=y_post.read()y_token=json.loads(y_read)['access_token']#print y_read#print y_token #------------------function------------- def luyin(): os.system('arecord -D plughw:1,0 -c 1 -d 2 1.wav -r 8000 -f S16_LE 2/dev/null') def fanyi():

#---------------语音识别部分 mac_address="haogeoyes" with open("1.wav",'rb') as f: s_file = f.read() speech_base64=base64.b64encode(s_file).decode('utf-8') speech_length=len(s_file) data_dict = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':y_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length} json_data = json.dumps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'm/server_api' request = urllib2.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib2.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) if json_resp.has_key('result'): out_txt=json_resp['result'][0] else: out_txt="Null" return out_txt def tuling(b): f=urllib.urlopen("23.com/openapi/api?key="此处为图灵API"info=%s" % b) f=json.loads(f.read())['text'] return f def hecheng(text,y_token): #text="你好我是机器人牛牛很高兴能够认识你" geturl="u.com/text2audio?tex="+text+"lan=zhper=1pit=9spd=6cuid=CCyo6UGf16ggKZGwGpQYL9Gxctp=1tok="+y_token return os.system('omxplayer "%s" /dev/null 21 '%(geturl)) #return os.system('omxplayer "%s" /dev/null 21 '%(geturl)) def nowtime(): return time.strftime('%Y-%m-%d %H:%M:%S ') #---------------main-----------------num=0 #num用来判断是第一次说话,还是在对话过程中first=1 #判断是不是第一说话 当1000次没有人动认为是第一次while True: if ganying()!=0: run=open('run.log','a') if first==0: hecheng("你好,我是牛牛机器人,你可以和我聊天,不过说话的时候你必须靠近话筒近一点,",y_token) hecheng("说点什么吧,2秒钟内说完哦.",y_token) first=1 #为1一段时间就不执行 num=0 #从新计数 #print ganying() run.write(nowtime()+"说点神马吧..........."+'n') print nowtime()+"说点神马吧.........." luyin() #开始录音 out=fanyi().encode("utf-8") #翻译文字 run.write(nowtime()+"我说:"+out+'n') print nowtime()+"我说:"+out if out == "Null": text="没有听清楚你说什么" os.system('omxplayer "shenme.wav" /dev/null 21 ') else: text=tuling(out) hecheng(text,y_token) print nowtime()+"牛牛:"+text run.write(nowtime()+"牛牛:"+text+'n') run.close() else: #print ganying() #调试查看是否为0有人没人 #print num num=num+1 #num长时间增大说明没有人在旁边 if num 1000: first=0 #0表示第一次说话

万事俱备 运行nohup python robot.py 哈哈就可以脱离屏幕开始愉快的语音聊天啦

下面看看聊天的日志记录吧

后续更新。。。。。。Python如何用语音优雅的控制小车

Python语音合成(日文翻译)

原文:

Python version

ttslearn のインストール

ttslearn の动作确认

パッケージのインポート

描画周りの设定

NumPy と Torch を用いた配列の作成

numpy.ndarray と torch.Tensor のインタフェースの违い

numpy.ndarray と torch.Tensor の相互変换

numpy.ndarray と torch.Tensor のメモリ共有

scipy.io.wavfile を利用した音声ファイルの読み込み

音声の可视化

窓関数

短时间フーリエ変换の実装

短时间フーリエ変换の结果の可视化

librosa.stft を用いた短时间フーリエ変换

librosa.stftは、STFTを実行する前にデフォルトで信号の冒头と末尾にパディング処理を行います。前述のSTFT実装はこの処理をサポートしていないため、同等のSTFTの结果を得るためには、center=Falseとしてパディング処理を行わないように设定します。

时间解像度と周波数解像度のトレードオフ

逆短时间フーリエ変换による音声の复元

メルフィルタバンク

メルスペクトログラムの计算

Griffin-Lim のアルゴリズムに基づく位相复元

瞬时周波数の可视化 (bonus)

Griffin-Limのアルゴリズムは、位相复元手法です。合成音声と自然音声の瞬时位相(位相の时间微分)を比较することで、位相复元が期待通り行われているかを视覚的に确认できます。

翻译:

Python 版本

ttslearn 的安装

ttslearn 的操作确认

导入程序包

设置绘图格式

使用NumPy和Torch创建数组

numpy.ndarray和torch.Tensor之间的接口差异

numpy.ndarray和torch.Tensor的相互转换

numpy.ndarray和torch.Tensor的内存共享

使用scipy.io.wavfile读取音频文件

语音可视化

窗函数

短时傅立叶变换的实现

短时傅立叶变换结果的可视化

使用librosa.stft的短时傅立叶变换

缺省情况下,librosa.stft在执行STFT(短时傅里叶变换)之前会对信号的开头和结尾进行填充。 由于上面提到的STFT实现不支持此操作,因此要获得等效的STFT结果,请将填充操作设置为center=False。

在时间分辨率和频率分辨率间权衡取舍

通过逆短时傅立叶变换进行语音的复原

邮件过滤器组

计算质谱图

基于Griffin-Lim算法的相位复原

瞬时频率可视化(bonus)

Griffin-Lim的算法是一种相位恢复方法。 通过比较合成语音和自然语音的瞬时相位(相位的时间微分),我们可以直观地看到相位恢复是否按预期进行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。