Gravity:中英文语音合成模块

简介

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

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

特性

  • 支持中文、英文和中英文混合合成
  • 自带喇叭
  • Gravity I2C/UART双通讯
  • 支持多种文本控制标识
  • 支持多种主控板,arduino、micro:bit、掌控板等

应用场景

  • 机器人语音
  • 语音播报
  • 语音提示
  • 文本阅读

技术规格

  • 供电电压:3.3V~5V
  • 工作电流:<50mA
  • I2C地址:0x40
  • 工作温度范围:-40℃~85℃
  • 产品尺寸:37*32mm

引脚说明

序号 丝印 功能描述
1 D/T I2C数据线/TX
2 C/T I2C时钟线/RX
3 GND 电源负极
4 VCC 电源正极
5 AOP 音频输出正
6 AON 音频输出负

使用教程

准备

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

  • 主要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 Set voice type 
   *  @param   FEMALE1,    //小燕,女声,推荐发音人
   *           MALE1,      //许久,男声,推荐发音人
   *           MALE2,      //许多,男声
   *           FEMALE2,    //小萍,女声
   *           DONALDDUCK, //唐老鸭,效果器
   *           FEMALE3,    //许小宝,女童声
   */
  void setSoundType(eSoundType_t type);

  /**
   *  @brief 设置音调
   *  @param tone,音调数值(0-9)
  */
  void setTone(uint8_t tone);

  /**
   *  @brief 设置英文发音
   *  @param pron(ALPHABET:以字母单个发音,WORD:以单词发音)
   */
  void setEnglishPron(eENpron_t pron);

  /**
   *  @brief 恢复默认设置
   */
  void reset();
  • 文本控制标识

语音合成功能支持多种文本控制标记,可以满足用户对语音合成发音人、音量、语速、语调等的设置。标记只是作为控制标记实现设置功能,不会合成为声音输出。如:“[s1]我慢条斯理。 [s8]我快言快语”中,经过标记的设置,前一句合成语速会很慢,后一句合成语速会很快,但不会读出“s1”和“s8”。

注意:控制标识为全局控制标识,也就是只要用了一次,在不对芯片进行复位、或断电、或使用[d]恢复默认设置的条件下,其后发送给芯片的所有文本都会处于它的控制之下。

DFR0760 i标记使用

更多标记使用示例,请看芯片手册第12.3章节。

接线图

样例代码1 - 使用I2C通讯合成语音

模块循环发出合成的声音(请注意开关是否拨到了I2C方向)

/*!
 * @file i2c.ino
 * @brief 通过i2c的方式控制语音合成传感器,并合成语音
 * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (https://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.h"
DFRobot_SpeechSynthesis_I2C ss;
void setup() {
  //初始化语音合成传感器
  ss.begin();
  //设置语音的音量大小为5
  //ss.setVolume(5);
  //设置语音的播放速度为5
  //ss.setSpeed(5);
  //设置发音人为女性
  //ss.setSoundType(ss.FEMALE1);
  //设置音调为5
  //ss.setTone(5);
  //设置英文以单词发音
  //ss.setEnglishPron(ss.WORD);
}

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 (https://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.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);
  //设置发音人为女性
  //ss.setSoundType(ss.FEMALE1);
  //设置音调为5
  //ss.setTone(5);
  //设置英文以单词发音
  //ss.setEnglishPron(ss.WORD);
}

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"));
}

Mind+ 上传模式编程

1、下载及安装软件。下载地址:https://mindplus.cc 详细教程:安装教程
2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
3、“扩展”中选择“主控板”中你使用的主控板,本教程以uno为例,因此选择“Arduino Uno”。然后在用户库中搜索语音合成加载扩展库。 详细教程:Mind+基础wiki教程-加载扩展库流程

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
import time


Board().begin()
p_gravitysynthesis = DFRobot_SpeechSynthesis_I2C()
p_gravitysynthesis.begin(p_gravitysynthesis.V1)
p_gravitysynthesis.set_voice(8)
p_gravitysynthesis.set_speed(5)
p_gravitysynthesis.set_tone(5)
p_gravitysynthesis.set_sound_type(p_gravitysynthesis.FEMALE2)

while True:
    p_gravitysynthesis.speak("你好")
    time.sleep(1)

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

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

更多

DFshopping_car1.png DFRobot商城购买链接