Gravity:中英文语音合成模块

简介

让声音为你的项目增添一抹特色!连接上语音合成模块,再添加几行简单的代码就可以让您的项目开口说话。无论是中文还是英文对于语音合成模块来说都是so easy,播报当前时间,播报环境数据统统不在话下,与语音识别模块结合还可实现语音对话!该模块采用I2C和UART两种通讯方式,Gravity接口,兼容绝大部分主控。模块上已经自带了一个喇叭,所以您无需再额外的添加喇叭。

注意:语音合成模块与micro:bit 电机驱动扩展板地址相同,故不能一起使用。

V2.0功能改动
发音更加自然
多音字发音错误率更小
无发音人选择

特性

应用场景

技术规格

引脚说明

序号 丝印 功能描述
1 D/T I2C数据线/TX
2 C/T I2C时钟线/RX
3 GND 电源负极
4 VCC 电源正极
5 AOP 音频输出正,可外接D类功放后接外置喇叭
6 AON 音频输出负,可外接D类功放后接外置喇叭

使用教程

准备

关于如何安装库文件,点击链接

接线图

样例代码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"));
}
  /**
   *  @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]恢复默认设置的条件下,其后发送给芯片的所有文本都会处于它的控制之下。

DFR0760-V2.0

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)检查接线

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接