mPython-tts

掌控板的文字转语音,语音合成TTS


Keywords
micropython, mpython
License
MIT
Install
pip install mPython-tts==0.1.0

Documentation

掌控板拓展板

extboard

硬件概述

掌控拓展板是mPython掌控板衍生的一款体积小巧、易于携带。支持电机驱动、语音播放、语音合成等功能的IO引脚扩展板,可扩展12路IO接口和2路I2C接口。

库的安装方法

可通过以下任一方法进行安装。

  1. 将项目中的extBoard.py 和依赖于base64.py拷到掌控板文件系统上
  2. 在掌控板REPL界面中,使用upip安装,步骤如下:
    • 前置条件需要掌控板连接网络
    • 导入upip模块,执行import upip
    • 执行`upip.install('mPython-extBoard')
>>> import upip
>>> upip.install('mPython-extBoard')

使用

电机驱动

示例:

from mpython import sleep
from extBoard import motor

# 设置电机1/2,速度范围-100~100
motor.setMotor1(80)   #正转80速度  
motor.setMotor2(80)
sleep(5)
motor.setMotor1(-80)   #反转80速度  
motor.setMotor2(-80)
sleep(5)

音频解码

目前只支持mp3格式的音频文件解码。

  • 播放本地mp3音频:受micropython文件系统限制,当文件大于1M基本很难下载下去。所以在使用本地播放 audio.local_play(file) 时,原则音mp3文件应尽量小。
  • 播放网络mp3音频: audio.url_play(url),url为mp3音频的网络链接地址。

示例:

from mpython import *
from extBoard import mp3

mywifi=wifi()               
mywifi.connectWiFi('ssid','password')   # 连接wifi网络

# 播放本地"music.mp3"文件
audio.local_play("music.mp3")        
# 播放网络mp3
audio.url_play("http://zhangmenshiting.qianqian.com/data2/music/464e50c6b1ca0dc850e3d9c67da9c922/599459882/599459882.mp3?xcode=9bebaff7b0af3395c70098e904ce32a9") 
audio.close() # 关闭解码    

TTS(文字转语音)

将文字信息转化为声音信息,给掌控板配上“嘴巴”。其合成音在音色、自然度等方面的表现均接近甚至超过了人声。
该功能使用讯飞的在线语音合成服务,需要用户自行在在讯飞开发平台(https://www.xfyun.cn/)注册账号,步骤如下:

  1. 注册账号
  2. 新建产品,选择“在线语音合成”服务。
  3. 在IP白名单中添加网络的公网IP。

示例:

from mpython import * 
from extBoard import *

mywifi=wifi()
mywifi.connectWiFi('ssid','password')          #连接 WiFi 网络

APPID = ""                              # 讯飞应用ID
API_KEY = ""    # 讯飞应用的api key


tts=TTS(APPID,API_KEY)   #构建TTS实例,并传入appid,api key 参数.

# 沁园春·长沙 诗词
poem=   "独立寒秋,湘江北去,橘子洲头。  \
        看万山红遍,层林尽染;漫江碧透,百舸争流。\
        鹰击长空,鱼翔浅底,万类霜天竞自由。\
        怅寥廓,问苍茫大地,谁主沉浮?\
        携来百侣曾游。忆往昔峥嵘岁月稠。\
        恰同学少年,风华正茂;书生意气,挥斥方遒。\
        指点江山,激扬文字,粪土当年万户侯。\
        曾记否,到中流击水,浪遏飞舟?"\


tts.translate(poem)                   # 文字转语音并播放

API 说明

函数 功能说明 参数
motor.setMotor1(speed) 设置1号电机速度 speed:速度,范围-100~100。
当为负值,反转;当为正值,正转。
motor.setMotor2(speed) 设置2号电机速度 同上
motor.getMotor1() 获取1号电机速度 /
motor.getMotor2() 同上 /
audio.local_play(file) 播放本地mp3音频文件 file:mp3音频文件名称,类型字符串
audio.url_play(url) 播放网络mp3音频 url:mp3网络音频链接地址,类型字符串
audio.close() 关闭音频解码 /
TTS(appid,api_key,voice_name="xiaoyan",engine_type="intp65") TTS类,语音合成,可将文字转语音 appid讯飞平台appid
api_key:讯飞平台api key
voice_name:发音人,默认"xiaoyan"
engine_type:引擎类型,默认"intp65"
更多参数说明,请看 讯飞语音合成开发文档
TTS.translate(text) 文字转语音 text:需要转换的文本
TTS.client_ip() 获取公网IP

执照

所有代码均在MIT许可下发布。