robot package

Submodules

robot.AI module

class robot.AI.AbstractRobot(**kwargs)[源代码]

基类:object

chat(texts)[源代码]
classmethod get_instance()[源代码]
class robot.AI.Emotibot(appid, location, more)[源代码]

基类:robot.AI.AbstractRobot

SLUG = 'emotibot'
chat(texts)[源代码]

使用Emotibot机器人聊天

Arguments: texts – user input, typically speech, to be parsed by a module

classmethod get_config()[源代码]
class robot.AI.TulingRobot(tuling_key)[源代码]

基类:robot.AI.AbstractRobot

SLUG = 'tuling'
chat(texts)[源代码]

使用图灵机器人聊天

Arguments: texts – user input, typically speech, to be parsed by a module

classmethod get_config()[源代码]
robot.AI.get_robot_by_slug(slug)[源代码]
Returns:
A robot implementation available on the current platform
robot.AI.get_robots()[源代码]

robot.ASR module

class robot.ASR.AbstractASR[源代码]

基类:object

Generic parent class for all ASR engines

classmethod get_config()[源代码]
classmethod get_instance()[源代码]
transcribe(fp)[源代码]
class robot.ASR.AliASR(appKey, token, **args)[源代码]

基类:robot.ASR.AbstractASR

阿里的语音识别API.

SLUG = 'ali-asr'
classmethod get_config()[源代码]
transcribe(fp)[源代码]
class robot.ASR.BaiduASR(appid, api_key, secret_key, dev_pid=1936, **args)[源代码]

基类:robot.ASR.AbstractASR

百度的语音识别API. dev_pid:

  • 1936: 普通话远场
  • 1536:普通话(支持简单的英文识别)
  • 1537:普通话(纯中文识别)
  • 1737:英语
  • 1637:粤语
  • 1837:四川话

要使用本模块, 首先到 yuyin.baidu.com 注册一个开发者账号, 之后创建一个新应用, 然后在应用管理的”查看key”中获得 API Key 和 Secret Key 填入 config.xml 中. …

baidu_yuyin:
appid: ‘9670645’ api_key: ‘qg4haN8b2bGvFtCbBGqhrmZy’ secret_key: ‘585d4eccb50d306c401d7df138bb02e7’

SLUG = 'baidu-asr'
classmethod get_config()[源代码]
transcribe(fp)[源代码]
class robot.ASR.TencentASR(appid, secretid, secret_key, region='ap-guangzhou', **args)[源代码]

基类:robot.ASR.AbstractASR

腾讯的语音识别API.

SLUG = 'tencent-asr'
classmethod get_config()[源代码]
transcribe(fp)[源代码]
class robot.ASR.XunfeiASR(appid, asr_api_key, asr_api_secret, tts_api_key, voice='xiaoyan')[源代码]

基类:robot.ASR.AbstractASR

科大讯飞的语音识别API. 外网ip查询:https://ip.51240.com/

SLUG = 'xunfei-asr'
classmethod get_config()[源代码]
transcribe(fp)[源代码]
robot.ASR.get_engine_by_slug(slug=None)[源代码]
Returns:
An ASR Engine implementation available on the current platform
Raises:
ValueError if no speaker implementation is supported on this platform
robot.ASR.get_engines()[源代码]

robot.Brain module

class robot.Brain.Brain(conversation)[源代码]

基类:object

isImmersive(plugin, text, parsed)[源代码]
pause()[源代码]

暂停某个技能的处理

printPlugins()[源代码]
query(text)[源代码]

query 模块

Arguments: text – 用户输入

restore()[源代码]

恢复某个技能的处理

say(msg, cache=False)[源代码]
understand(fp)[源代码]

robot.ConfigMonitor module

class robot.ConfigMonitor.ConfigMonitor(conversation)[源代码]

基类:watchdog.events.FileSystemEventHandler

on_modified(event)[源代码]

Called when a file or directory is modified.

参数:event (DirModifiedEvent or FileModifiedEvent) – Event representing file/directory modification.

robot.Conversation module

class robot.Conversation.Conversation(profiling=False)[源代码]

基类:object

activeListen(silent=False)[源代码]

主动问一个问题(适用于多轮对话)

appendHistory(t, text, UUID='')[源代码]

将会话历史加进历史记录

checkRestore()[源代码]
converse(fp, callback=None)[源代码]

核心对话逻辑

doConverse(fp, callback=None, onSay=None)[源代码]
doParse(query, **args)[源代码]
doResponse(query, UUID='', onSay=None)[源代码]
getHistory()[源代码]
getImmersiveMode()[源代码]
interrupt()[源代码]
pardon()[源代码]
play(src, delete=False, onCompleted=None, volume=1)[源代码]

播放一个音频

reload()[源代码]

重新初始化

say(msg, cache=False, plugin='', onCompleted=None, wait=False)[源代码]

说一句话 :param msg: 内容 :param cache: 是否缓存这句话的音频 :param plugin: 来自哪个插件的消息(将带上插件的说明) :param onCompleted: 完成的回调 :param wait: 是否要等待说完(为True将阻塞主线程直至说完这句话)

setImmersiveMode(slug)[源代码]

robot.NLU module

class robot.NLU.AbstractNLU[源代码]

基类:object

Generic parent class for all NLU engines

getIntent(parsed)[源代码]

提取意图

参数:parsed – 解析结果
返回:意图数组
getSay(parsed, intent)[源代码]

提取回复文本

参数:
  • parsed – 解析结果
  • intent – 意图的名称
返回:

回复文本

getSlotWords(parsed, intent, name)[源代码]

找出命中某个词槽的内容

参数:
  • parsed – 解析结果
  • intent – 意图的名称
  • name – 词槽名
返回:

命中该词槽的值的列表。

getSlots(parsed, intent)[源代码]

提取某个意图的所有词槽

参数:
  • parsed – 解析结果
  • intent – 意图的名称
返回:

词槽列表。你可以通过 name 属性筛选词槽,

再通过 normalized_word 属性取出相应的值

classmethod get_config()[源代码]
classmethod get_instance()[源代码]
hasIntent(parsed, intent)[源代码]

判断是否包含某个意图

参数:
  • parsed – 解析结果
  • intent – 意图的名称
返回:

True: 包含; False: 不包含

parse(query, **args)[源代码]

进行 NLU 解析

参数:
  • query – 用户的指令字符串
  • **args

    可选的参数

class robot.NLU.UnitNLU[源代码]

基类:robot.NLU.AbstractNLU

百度UNIT的NLU API.

SLUG = 'unit'
getIntent(parsed)[源代码]

提取意图

参数:parsed – 解析结果
返回:意图数组
getSay(parsed, intent)[源代码]

提取 UNIT 的回复文本

参数:
  • parsed – UNIT 解析结果
  • intent – 意图的名称
返回:

UNIT 的回复文本

getSlotWords(parsed, intent, name)[源代码]

找出命中某个词槽的内容

参数:
  • parsed – UNIT 解析结果
  • intent – 意图的名称
  • name – 词槽名
返回:

命中该词槽的值的列表。

getSlots(parsed, intent)[源代码]

提取某个意图的所有词槽

参数:
  • parsed – UNIT 解析结果
  • intent – 意图的名称
返回:

词槽列表。你可以通过 name 属性筛选词槽,

再通过 normalized_word 属性取出相应的值

classmethod get_config()[源代码]

百度UNIT的配置

无需配置,所以返回 {}

hasIntent(parsed, intent)[源代码]

判断是否包含某个意图

参数:
  • parsed – UNIT 解析结果
  • intent – 意图的名称
返回:

True: 包含; False: 不包含

parse(query, **args)[源代码]

使用百度 UNIT 进行 NLU 解析

参数:
  • query – 用户的指令字符串
  • **args

    UNIT 的相关参数 - service_id: UNIT 的 service_id - api_key: UNIT apk_key - secret_key: UNIT secret_key

返回:

UNIT 解析结果。如果解析失败,返回 None

robot.NLU.get_engine_by_slug(slug=None)[源代码]
Returns:
An NLU Engine implementation available on the current platform
Raises:
ValueError if no speaker implementation is supported on this platform
robot.NLU.get_engines()[源代码]

robot.Player module

class robot.Player.AbstractPlayer(**kwargs)[源代码]

基类:object

is_playing()[源代码]
play()[源代码]
play_block()[源代码]
stop()[源代码]
class robot.Player.MusicPlayer(playlist, plugin, **kwargs)[源代码]

基类:robot.Player.SoxPlayer

给音乐播放器插件使用的, 在 SOXPlayer 的基础上增加了列表的支持, 并支持暂停和恢复播放

SLUG = 'MusicPlayer'
is_pausing()[源代码]
is_playing()[源代码]
next()[源代码]
pause()[源代码]
play()[源代码]
prev()[源代码]
resume()[源代码]
stop()[源代码]
turnDown()[源代码]
turnUp()[源代码]
update_playlist(playlist)[源代码]
class robot.Player.SoxPlayer(**kwargs)[源代码]

基类:robot.Player.AbstractPlayer

SLUG = 'SoxPlayer'
appendOnCompleted(onCompleted)[源代码]
doPlay()[源代码]
is_playing()[源代码]
play(src, delete=False, onCompleted=None, wait=False)[源代码]
play_block()[源代码]
stop()[源代码]
robot.Player.getPlayerByFileName(fname)[源代码]
robot.Player.no_alsa_error()[源代码]
robot.Player.play(fname, onCompleted=None)[源代码]
robot.Player.py_error_handler(filename, line, function, err, fmt)[源代码]

robot.TTS module

class robot.TTS.AbstractTTS[源代码]

基类:object

Generic parent class for all TTS engines

classmethod get_config()[源代码]
classmethod get_instance()[源代码]
get_speech(phrase)[源代码]
class robot.TTS.AliTTS(appKey, token, voice='xiaoyun', **args)[源代码]

基类:robot.TTS.AbstractTTS

阿里的TTS voice: 发音人,默认是 xiaoyun

SLUG = 'ali-tts'
classmethod get_config()[源代码]
get_speech(phrase)[源代码]
class robot.TTS.BaiduTTS(appid, api_key, secret_key, per=1, lan='zh', **args)[源代码]

基类:robot.TTS.AbstractTTS

使用百度语音合成技术 要使用本模块, 首先到 yuyin.baidu.com 注册一个开发者账号, 之后创建一个新应用, 然后在应用管理的”查看key”中获得 API Key 和 Secret Key 填入 config.yml 中. …

baidu_yuyin:
appid: ‘9670645’ api_key: ‘qg4haN8b2bGvFtCbBGqhrmZy’ secret_key: ‘585d4eccb50d306c401d7df138bb02e7’ dev_pid: 1936 per: 1 lan: ‘zh’

SLUG = 'baidu-tts'
classmethod get_config()[源代码]
get_speech(phrase)[源代码]
class robot.TTS.TencentTTS(appid, secretid, secret_key, region='ap-guangzhou', voiceType=0, language=1, **args)[源代码]

基类:robot.TTS.AbstractTTS

腾讯的语音合成 region: 服务地域,挑个离自己最近的区域有助于提升速度。

voiceType:
  • 0:女声1,亲和风格(默认)
  • 1:男声1,成熟风格
  • 2:男声2,成熟风格
language:
  • 1: 中文,最大100个汉字(标点符号算一个汉子)
  • 2: 英文,最大支持400个字母(标点符号算一个字母)
SLUG = 'tencent-tts'
classmethod get_config()[源代码]
get_speech(phrase)[源代码]
class robot.TTS.XunfeiTTS(appid, asr_api_key, asr_api_secret, tts_api_key, voice='xiaoyan')[源代码]

基类:robot.TTS.AbstractTTS

科大讯飞的语音识别API. 外网ip查询:https://ip.51240.com/ voice_name: https://www.xfyun.cn/services/online_tts

SLUG = 'xunfei-tts'
getBody(text)[源代码]
getHeader(aue)[源代码]
classmethod get_config()[源代码]
get_speech(phrase)[源代码]
robot.TTS.get_engine_by_slug(slug=None)[源代码]
Returns:
A TTS Engine implementation available on the current platform
Raises:
ValueError if no speaker implementation is supported on this platform
robot.TTS.get_engines()[源代码]

robot.Updater module

class robot.Updater.Updater[源代码]

基类:object

fetch(dev=False)[源代码]
update()[源代码]
robot.Updater.fetch(dev)[源代码]

robot.config module

robot.config.doInit(config_file='/Users/panweizhou/Documents/projects/wukong-robot/static/default.yml')[源代码]
robot.config.dump(configStr)[源代码]
robot.config.get(item='', default=None)[源代码]

获取某个配置的值

参数:
  • item – 配置项名。如果是多级配置,则以 “/a/b” 的形式提供
  • default – 默认值(可选)
返回:

这个配置的值。如果没有该配置,则提供一个默认值

robot.config.getConfig()[源代码]

返回全部配置数据

返回:全部配置数据(字典类型)
robot.config.getText()[源代码]
robot.config.get_path(items, default=None)[源代码]
robot.config.has(item)[源代码]

判断配置里是否包含某个配置项

参数:item – 配置项名
返回:True: 包含; False: 不包含
robot.config.has_path(items)[源代码]
robot.config.init()[源代码]
robot.config.reload()[源代码]

重新加载配置

robot.constants module

robot.constants.getConfigData(*fname)[源代码]

获取配置目录下的指定文件的路径

参数:*fname

指定文件名。如果传多个,则自动拼接

返回:配置目录下的某个文件的存储路径
robot.constants.getConfigPath()[源代码]

获取配置文件的路径

returns: 配置文件的存储路径

robot.constants.getData(*fname)[源代码]

获取资源目录下指定文件的路径

参数:*fname

指定文件名。如果传多个,则自动拼接

返回:配置文件的存储路径
robot.constants.getDefaultConfigPath()[源代码]
robot.constants.getHotwordModel(fname)[源代码]
robot.constants.newConfig()[源代码]

robot.logging module

robot.logging.getLogger(name)[源代码]

作用同标准模块 logging.getLogger(name)

返回:logger
robot.logging.readLog(lines=200)[源代码]

获取最新的指定行数的 log

参数:lines – 最大的行数
返回:最新指定行数的 log
robot.logging.tail(filepath, n=10)[源代码]

实现 tail -n

robot.plugin_loader module

robot.plugin_loader.get_plugins(con)[源代码]
robot.plugin_loader.init_plugins(con)[源代码]

动态加载技能插件

参数: con – 会话模块

robot.statistic module

class robot.statistic.ReportThread(t)[源代码]

基类:threading.Thread

run()[源代码]

Method representing the thread’s activity.

You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.

robot.statistic.getUUID()[源代码]
robot.statistic.report(t)[源代码]

robot.utils module

robot.utils.check_and_delete(fp, wait=0)[源代码]

检查并删除文件/文件夹

参数:fp – 文件路径
robot.utils.clean()[源代码]

清理垃圾数据

robot.utils.convert_mp3_to_wav(mp3_path)[源代码]

将 mp3 文件转成 wav

参数:mp3_path – mp3 文件路径
返回:wav 文件路径
robot.utils.convert_wav_to_mp3(wav_path)[源代码]

将 wav 文件转成 mp3

参数:wav_path – wav 文件路径
返回:mp3 文件路径
robot.utils.emailUser(SUBJECT='', BODY='', ATTACH_LIST=[])[源代码]

给用户发送邮件

参数:
  • SUBJECT – subject line of the email
  • BODY – body text of the email
返回:

True: 发送成功; False: 发送失败

robot.utils.getCache(msg)[源代码]

获取缓存的语音

robot.utils.getTimezone()[源代码]

获取时区

robot.utils.get_do_not_bother_off_hotword()[源代码]

关闭勿扰模式唤醒词

robot.utils.get_do_not_bother_on_hotword()[源代码]

打开勿扰模式唤醒词

robot.utils.get_file_content(filePath)[源代码]

读取文件内容并返回

参数:filePath – 文件路径
返回:文件内容
引发:IOError – 读取失败则抛出 IOError
robot.utils.get_pcm_from_wav(wav_path)[源代码]

从 wav 文件中读取 pcm

参数:wav_path – wav 文件路径
返回:pcm 数据
robot.utils.is_proper_time()[源代码]

是否合适时间

robot.utils.lruCache()[源代码]

清理最近未使用的缓存

robot.utils.saveCache(voice, msg)[源代码]

获取缓存的语音

robot.utils.sendEmail(SUBJECT, BODY, ATTACH_LIST, TO, FROM, SENDER, PASSWORD, SMTP_SERVER, SMTP_PORT)[源代码]

发送邮件

参数:
  • SUBJECT – 邮件标题
  • BODY – 邮件正文
  • ATTACH_LIST – 附件
  • TO – 收件人
  • FROM – 发件人
  • SENDER – 发件人信息
  • PASSWORD – 密码
  • SMTP_SERVER – smtp 服务器
  • SMTP_PORT – smtp 端口号
返回:

True: 发送成功; False: 发送失败

robot.utils.write_temp_file(data, suffix, mode='w+b')[源代码]

写入临时文件

参数:
  • data – 数据
  • suffix – 后缀名
  • mode – 写入模式,默认为 w+b
返回:

文件保存后的路径

Module contents