语音模块/Voice

此模块可以进行语音识别和语音播报等操作。

朗读…

Voice.speak(text, block=False)
模块正在朗读时若收到新的朗读指令会打断当前朗读内容,然后朗读新内容
参数:
  • text (str) – 朗读内容,可以是字符串,整数,小数
  • block (bool) –

    阻塞参数:

    False: 不阻塞
    True: 阻塞

Examples

# 朗读各种不同内容
from wonderbits import Voice
import time

voice1 = Voice()

# 朗读字符串 '你好,豌豆拼',朗读时不阻塞
voice1.speak('你好,豌豆拼')
time.sleep(1)

# 由于前一条朗读内容还未朗读完,此时会打断正在朗读的内容
# 朗读浮点型数字 -3.14,朗读时阻塞
voice1.speak(-3.14,True)

# 在第2行第1列显示变量
temp = 10
temp = temp + 3
voice1.speak(temp, True)

添加识别命令

Voice.add_command(command)
添加语音识别命令,命令需要使用拼音字符串表示
参数:command (str) – 识别命令,只可以是拼音字符串

Examples

# 设置语音识别命令,显示识别结果
from wonderbits import Voice, Display
import time

voice1 = Voice()
display1 = Display()

# 添加语音识别命令
voice1.add_command('ni hao')
voice1.add_command('ce shi')
voice1.add_command('kai shi')
voice1.add_command('ting zhi')

# 显示识别的命令
while True:
    display1.print(1, 1, voice1.get_result())

获取识别命令

Voice.get_result()
返回:识别命令对应的拼音字符串
返回类型:str

Examples

未提供。可参考 add_command 的使用案例

设置朗读音量

Voice.set_volume(val)
参数:val (int) – 音量值:0~100

Examples

# 显示各种不同内容
from wonderbits import Voice
import time

voice1 = Voice()

# 朗读字符串 '你好,豌豆拼'
voice1.speak('你好,豌豆拼', True)

# 设置朗读音量为100
voice1.set_volume(100)

# 朗读字符串 '你好,豌豆拼'
voice1.speak('你好,豌豆拼', True)

清空已经识别的命令

Voice.clear_result()

Examples

未提供。可参考 when_recognized 的使用案例

获取朗读状态

Voice.is_playing()
返回:
True:正在朗读
False:空闲
返回类型:bool

Examples

# 显示各种不同内容
from wonderbits import Voice, Display
import time

voice1 = Voice()
display1 = Display()

# 朗读字符串 '你好,豌豆拼'
voice1.speak('你好,豌豆拼')

# 显示播放状态
while True:
    display1.print(1, 1, voice1.is_playing())

当检测到命令

Voice.when_recognized(command)
当检测到命令时,执行被修饰的函数
由于语音识别结果不会自动清空,所以当检测成功后会一直执行被修饰函数
可以在被修饰函数中调用clear_result函数
参数:command (str) – 监测到命令为command

Examples

from wonderbits import Voice

voice1 = Voice()

# 添加语音识别命令
voice1.add_command('ni hao')
voice1.add_command('ce shi')

# 当识别到 '你好' 会不停触发run1函数,不停朗读 '你好'
@voice1.when_recognized('ni hao')
def run1(val):
    voice1.speak('你好', True)

# 当识别到 '测试' 只会触发有一次run2函数,只会朗读一次 '测试'
@voice1.when_recognized('ce shi')
def run2(val):
    voice1.speak('测试', True)
    # 清空识别结果
    voice1.clear_result()

while True:
    pass

事件源

Voice.Voice.source_command

command事件源

Voice.Voice.source_play_state

play_state事件源