Речь
Microbit умеет синтезировать речь по текстовому сообщению. Для этого используется синтезатор речи.
Подключите библиотеку speech
и вызовите функцию say
, передайте тектовое сообщение в нее:
import speech
speech.say("Hello, World")
В команде можно использовать параметры:
pitch
- высокий или низкий голос (0 = низкий, 255 = высокий)speed
- скорость речи (0 = медленно, 255 = быстро)mouth
- протяженность звуков (0 = закрытый звук, 255 = открытый звукы)throat
- напряженность голоса (0 = расслабленный, 255 = напряженный)
Чтобы настроить параметры, вы передаете их в качестве аргументов функции say
Пример:
speech.say("I am a DALEK", speed=120, pitch=100, throat=100, mouth=200)
Создание длинной речи
Давайте напишем программу для речи:
import speech
import random
from microbit import sleep
# Генерируются случайные слова, которые вставляются в речь.
location = random.choice(["brent", "trent", "kent", "tashkent"])
action = random.choice(["wrapped up", "covered", "sang to", "played games with"])
obj = random.choice(["head", "hand", "dog", "foot"])
prop = random.choice(["in a tent", "with cement", "with some scent",
"that was bent"])
result = random.choice(["it ran off", "it glowed", "it blew up",
"it turned blue"])
attitude = random.choice(["in the park", "like a shark", "for a lark",
"with a bark"])
conclusion = random.choice(["where it went", "its intent", "why it went",
"what it meant"])
# формирование речи.
poem = [
"there was a young man from {}".format(location),
"who {} his {} {}".format(action, obj, prop),
"one night after dark",
"{} {}".format(result, attitude),
"and he never worked out {}".format(conclusion),
"EXTERMINATE",
]
# запуск фраз в цикле.
for line in poem:
speech.say(line, speed=120, pitch=100, throat=100, mouth=200)
sleep(500)
Фонемы
Часто генератор речи воспроизводит английское слово неправильно. Для точного воспроизведения речи используются фонемы.
Полный список фонем, которые понимает синтезатор речи, можно найти в английской
документации по API для речи ( https://microbit-micropython.readthedocs.io/en/v2-docs/speech.html ).
В качестве альтернативы можно использовать функцию translate
.
Функция pronounce
используется следующим образом:
speech.pronounce("/HEH5EH4EH3EH2EH2EH3EH4EH5EHLP.”)