简介
让声音为你的项目增添一抹特色!连接上语音合成模块,再添加几行简单的代码就可以让您的项目开口说话。无论是中文还是英文对于语音合成模块来说都是so easy,播报当前时间,播报环境数据统统不在话下,与语音识别模块结合还可实现语音对话!该模块采用I2C和UART两种通讯方式,Gravity接口,兼容绝大部分主控。模块上已经自带了一个喇叭,所以您无需再额外的添加喇叭。
注意:语音合成模块与micro:bit 电机驱动扩展板地址相同,故不能一起使用。
V2.0功能改动
发音更加自然
多音字发音错误率更小
无发音人选择
特性
- 支持中文、英文和中英文混合合成
- 自带喇叭
- Gravity I2C/UART双通讯
- 支持多种文本控制标识
- 支持多种主控板,arduino、micro:bit、掌控板等
应用场景
- 机器人语音
- 语音播报
- 语音提示
- 文本阅读
技术规格
- 供电电压:3.3V~5V
- 工作电流:160mA
- I2C地址:0x40
- 工作温度范围:-40℃~85℃
- 产品尺寸:42*32mm
引脚说明
序号 | 丝印 | 功能描述 |
---|---|---|
1 | D/T | I2C数据线/TX |
2 | C/T | I2C时钟线/RX |
3 | GND | 电源负极 |
4 | VCC | 电源正极 |
5 | AOP | 音频输出正,可外接D类功放后接外置喇叭 |
6 | AON | 音频输出负,可外接D类功放后接外置喇叭 |
使用教程
准备
- 硬件
- 1 x Arduino UNO控制板
- 1 x Gravity:中英文语音合成模块V2.0
- 若干 杜邦线
- 软件
- Arduino IDE, 点击下载Arduino IDE
- 语音合成库文件和示例程序
关于如何安装库文件,点击链接
接线图
样例代码1 - 使用I2C通讯合成语音
模块循环发出合成的声音(请注意开关是否拨到了I2C方向)
/*!
* @file i2c.ino
* @brief 通过i2c的方式控制语音合成传感器,并合成语音
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2020-11-6
* @get from https://www.dfrobot.com
* @url https://github.com/DFRobot/DFRobot_SpeechSynthesis
*/
#include "DFRobot_SpeechSynthesis_V2.h"
DFRobot_SpeechSynthesis_I2C ss;
void setup() {
//初始化语音合成传感器
ss.begin();
//设置语音的音量大小为5
//ss.setVolume(5);
//设置语音的播放速度为5
//ss.setSpeed(5);
//设置音调为5
//ss.setTone(5);
//设置英文以单词发音
//ss.setEnglishPron(ss.eWord);
}
void loop() {
ss.speak(F("黑灰化肥发灰黑会挥发"));
ss.speak(F("Hello, I'm Speech Synthesis module"));
ss.speak(F("duck不必"));
ss.speak(F("a b c d e f g"));
/*使用文本控制标识控制*/
//音量标识
//ss.speak("[v3]Hello [v8]world");
//单词发音方式标识
//ss.speak("[h1]Hello [h2]world");
}
样例代码2 - 使用UART通讯合成语音
模块循环发出合成的声音(请注意开关是否拨到了UART方向)
为了保证通讯稳定建议使用硬串口进行通讯
/*!
* @file uart.ino
* @brief 通过uart的方式控制语音合成传感器,并合成语音
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2020-11-6
* @get from https://www.dfrobot.com
* @url https://github.com/DFRobot/DFRobot_SpeechSynthesis
*/
#include "DFRobot_SpeechSynthesis_V2.h"
#include <SoftwareSerial.h>
SoftwareSerial ssSerial1(2, 3); //RX, TX
DFRobot_SpeechSynthesis_UART ss;
void setup() {
ssSerial1.begin(115200);
//初始化语音合成传感器
ss.begin(ssSerial1);
//设置语音的音量大小为5
//ss.setVolume(5);
//设置语音的播放速度为5
//ss.setSpeed(5);
//设置音调为5
//ss.setTone(5);
//设置英文以单词发音
//ss.setEnglishPron(ss.eWord);
}
void loop() {
ss.speak(F("黑灰化肥发灰黑会挥发"));
ss.speak(F("Hello, I'm Speech Synthesis module"));
ss.speak(F("duck不必"));
ss.speak(F("a b c d e f g"));
/*使用文本控制标识控制*/
//音量标识
//ss.speak(F("[v3]Hello [v8]world"));
//单词发音方式标识
//ss.speak(F("[h1]Hello [h2]world"));
}
- 主要API接口函数列表
/**
* @brief 语音合成函数
* @param word 要合成的内容,可以是中文,英文,数字等
*/
void speak(String word);
/**
* @brief 设置语音的音量大小
* @param voc,音量数值(0-9)
*/
void setVolume(uint8_t voc);
/**
* @brief 设置语音的播放速度
* @param speed,速度数值(0-9)
*/
void setSpeed(uint8_t speed);
/**
* @brief 设置音调
* @param tone,音调数值(0-9)
*/
void setTone(uint8_t tone);
/**
* @brief 设置英文发音
* @param pron(eAlphabet:以字母单个发音,eWord:以单词发音)
*/
void setEnglishPron(eENpron_t pron);
/**
* @brief 恢复默认设置
*/
void reset();
- 文本控制标识
语音合成功能支持多种文本控制标记,可以满足用户对语音合成发音人、音量、语速、语调等的设置。标记只是作为控制标记实现设置功能,不会合成为声音输出。如:“[s1]我慢条斯理。 [s8]我快言快语”中,经过标记的设置,前一句合成语速会很慢,后一句合成语速会很快,但不会读出“s1”和“s8”。
注意:控制标识为全局控制标识,也就是只要用了一次,在不对芯片进行复位、或断电、或使用[d]恢复默认设置的条件下,其后发送给芯片的所有文本都会处于它的控制之下。
Mind+ 上传模式编程
注意:使用前请将Mind+版本更新到1.7.2版本及以上才支持语音合成V2。
1、下载及安装软件。下载地址:https://mindplus.cc 详细教程:安装教程
2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
3、“扩展”中选择“主控板”中你使用的主控板,本教程以uno为例,因此选择“Arduino Uno”。然后在执行器中搜索语音合成加载库。
4、进行编程,程序如下图:
5、菜单“连接设备”,“上传到设备”
6、程序上传完毕后,打开串口即可合成语音。详细教程:Mind+基础wiki教程-串口打印
注:如果使用到大量的文字播放,可调用“使用flash存储”功能将文字存储于flash以减少对内存的占用。
Mind+ Python模式编程(行空板)
Mind+Python模式为完整Python编程,因此需要能运行完整Python的主控板,此处以行空板为例说明
连接图
操作步骤
1、下载及安装官网最新软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
2、切换到“Python模式”。“扩展”中选择“官方库”中的“行空板”和“pinpong库”中的”pinpong初始化“和“语音合成模块”。切换模式和加载库的详细操作链接
3、进行编程
4、连接行空板,程序点击运行后,可在终端查看数据。行空板官方文档-行空板快速上手教程 (unihiker.com)
代码编程
以pinpong库为例,行空板官方文档-行空板快速上手教程 (unihiker.com)
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from pinpong.libs.dfrobot_speech_synthesis import DFRobot_SpeechSynthesis_I2C
from pinpong.board import Board
Board().begin()
p_gravitysynthesis = DFRobot_SpeechSynthesis_I2C()
p_gravitysynthesis.begin(p_gravitysynthesis.V2)
while True:
p_gravitysynthesis.speak("你好")
Makecode编程
模块链接:https://github.com/DFRobot/pxt-DFRobot_speechSynthesisV2.git
常见问题
1.mind+软件中无法使用语音合成?
答:(1)更新Mind+版本更新到1.7.2版本 (2)重启mind+,新建项目,在执行器中搜索语音合成加载库,不能在用户库里加载 (3)使用上图一样的代码 (4)合成模块开关拨到I2C,并重新插拔杜邦线 (5)检查接线
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。