微软智能语音报告

972 阅读10分钟
  1. 背景概述

     为了更好的用户体验、更高的市场竞争力和更丰富的功能,想要实现从移动端APP语音控制电视的效果,目前市面上有很多成熟的技术选型,当前通过前期商务沟通,主要考虑接入微软的产品,以下主要分析微软实现智能语音控制电视设备的报告

  1. 流程概述

即从微软产品的技术来分析,首先需要将用户在移动端的麦克风语音或语音文件翻译成文本,再将翻译后的文本作为重要参数调用CHAt-GPT接口获取相关操控电视的指令,再将指令下发给电视设备执行

image.png

image.png

  1. 流程实现

如上流程图所示,最重要的部分是如何将语音转为文本和根据文本+协议获取控制电视指令,现在将对当前两个技术流程实现具体分析,其中语音转文本主要使用微软的实语音转文本技术 ,获取电视指令则主要使用Chat-GPT大模型技术

  1. 实时语音转为文本

  1. 识别一次和连续识别

实时语音转文本可支持对麦克风语音和语音文件的识别,根据是否需要在一次转换中识别多个语言分为连续识别和识别一次,用识别一次,可识别单个言语。 单个言语的结束是通过在结束时倾听静音或处理最长 15 秒音频时确定的。与此相反,当你想控制何时停止识别和想要识别多个语言时,可使用连续识别

功能识别类型结束控制语言支持
识别一次麦克风语音和语音文件倾听静音或处理最长 15 秒音频时确定单个语言
连续识别麦克风语音和语音文件可手动控制处理多长时间(设置多长时间就是多长时间)多个语言

官方地址:learn.microsoft.com/zh-cn/azure…

  1. 语言识别

在语音转为文本时,如需要在返回的文本中有语言字段,则需要使用到语言识别功能,它分为起始和连续语言标识 (LID),他们各有如下特性:

  • 对于起始 LID,最多可添加 4 种语言;对于连续 LID,最多可添加 10 种语言。 语音服务会返回提供的其中一种候选语言,即使音频中不存在这些语言。 例如,如果提供 fr-FR(法语)和 en-US(英语)作为候选语言,但语音使用的是德语,则返回 fr-FRen-US
  • 起始 LID在音频的前几秒钟内标识语言一次。 如果音频中的语言不会更改,请使用起始 LID。 使用起始 LID时,可以在不到 5 秒的时间内检测并返回一种语言。
  • 连续 LID可以在音频持续时间内识别多种语言。 如果音频中的语言会更改,请使用连续 LID连续 LID不支持在同一句子中更改语言。 例如,如果你主要说西班牙语并插入一些英语单词,它将不会检测每个单词的语言更改。

官方地址:learn.microsoft.com/zh-cn/azure…

  1. 总结

功能能力描述适用方案
识别一次在一次STT中只能识别一种语言语音并转为文本,但是没有语言字返回支持,适用在一次语音控制电视时只会用一种语言语音的情况,即在移动端使用STT之前告诉用户只能使用某一种语言,缺点:如果用户说了其他语言的语音,无法阻止,也会正常STT,导致调用chat-gpt会有自动翻译问题
识别一次+起始语言识别在一次STT中只会识别语言列表(最多4种)中的一种语言语音并转为文本,其他的语种不会识别,有语言字段返回支持,适用在一次语音控制电视时只会用一种语言语音的情况, 缺点:无法控制语音监听时间
连续识别在一次STT中连续识别多个语言语音并转为文本,但是没有语言字段返回不支持
连续识别+起始语言识别在一次STT中只能识别语言列表(最多4种)中的一种,其他的语种不会识别,有语言字段返回支持,适用在一次语音控制电视时只会用一种语言语音的情况,缺点:1)较“识别一次”有点功能冗余 2)不能自动停止监听麦克风语音时间
连续识别+连续语言识别在一次STT中识别语言列表中(最多10种)的所有语言,有语言字段返回支持,适用在一次语音控制电视时会用多种语言语音的情况,缺点:1)识别率很低,2)需要在调用chat-gpt设置多种语言的示例
  1. 调用OpenAi获取指令

调用OpenAi接口获取控制电视的指令,首先需要定义协议(系统信息)、示例(用户+助手),如下图所示

官方地址:oai.azure.com/chat

  1. 协议设置

根据微软同事前期提供的协议示例,再让chatGpt帮忙分析优化,得出协议组成按如下部分

协议组成内容
协议名称统一设备描述语言协议
协议版本v1.0.0
概述该协议定义了智能家居控制 API 的 JSON 格式报文,以及相关的字段和槽位。该协议能够帮助 AI 智能家居助手准确理解用户的意图,从而更好地控制家里的智能设备。
通信格式该协议采用 JSON 格式,包含以下字段和槽位:- classifier: 消息分类或类别,包括 mideaDomain 和 publicDomain。
  • domain: 消息领域技能,包括 deviceControl、deviceQuery、store、scenario、player、recipe、kitchen、config、alarm、command、general。

  • utterance: 处理后的话术。

  • fallback: 用户原始话术。

  • intent: 用户意图,包含以下字段和槽位:

    • deviceName: 设备名称,包括整挂灯、壁挂炉、壁挂洗衣机、冰箱、波轮洗衣机、床头灯、灯、地暖、电磁炉、电饭煲、电热水瓶、电水壶、电压力锅、风扇、复式洗衣机、干衣机、管线机、滚简洗衣机、集成灶、加湿器、净水机、烤箱、空气净化器、空气能热水器、空调、快速烹饪机、烹饪机、破壁机、取暖器、燃气热水器、扫地机、微波炉、微蒸烤一体机、西式烹饪机、洗碗机、洗衣机、消毒柜、新风机、烟机、饮水机、浴霸、灶具、蒸箱、智能床、中央空调、除湿机、大烤箱、空气炸锅、空调扇、料理机、嵌入式蒸箱、微波饭煲、微波烤箱、小烤箱、蒸烤炉。

    • deviceVerb: 设备操作,包括 powerOn、start、powerOff、stop、cancel。

    • location: 室内位置,包括阳台、客厅、主卧、次卧、厨房、浴室等。

    • negative: 否定操作。

    • allVerb: 所有操作。

    • duration: 操作持续时间。

    • frequency: 操作频率。

    • timePeriod:时间段,包括上午、中午、下午等。 | | 版本历史 | - v1.0.0:该协议定义了智能家居控制 API 的 JSON 格式报文,以及相关的字段和槽位。 | | 用户 | 我要开灯,小酷 | | 助手 | { "classifier": "mideaDomain", "domain": "deviceControl", "utterance": "我要开灯", "fallBack": "我要开灯", "intent": { "deviceName": "灯", "deviceVerb": "powerOn", "location": "", "negative": "", "allVerb": "", "timePeriod": "" } } | | 协议原始内容 | 你是AI智能家居助手,你的名字叫小酷,根据用户要求,生成控制API的JSON格式报文。 注意,除JSON外不要生成任何其他内容。 xx公司的统一设备描述语言协议是智能家居技能与AI平台之间的通讯协议。基于这些协议可以准确地理解用户的意图,轻松地通过语音控制家里的智能设备,与设备进行交互。 统一设备描述语言协议采用JS0N消息格式。该协议的输入是语音入口设备和输入文本,该协议的输出是response格式,组成字段包括lassifier、domain、utterance、fallBack、intent。字段解释如下:Classifier:分类或类别,包括如下字段值mideaDomain、publicDomain; mideaDomain是指美的电器设备类别,publicDomain是指非公家电类别;domain: 领域技能,包括如下字段值: deviceControl、deviceQuery、store、scenari0、player、recipe、Kitchen、config、alarm、cmd、general;utterance:处理后话术fallBack:用户原话术intent:用户意图,组成字段包括: deviceName、devceVerb、locatonnegative、allVerb;deviceName: 设备名字,包括: 整挂灯,壁挂炉,壁挂洗衣机,冰箱,波轮洗衣机,床头灯,灯,地暖,电磁炉,电饭煲电热水瓶,电水壶,电压力锅,风扇,复式洗衣机,干衣机,管线机,滚简洗衣机,集成灶,加湿器,净水机,烤箱,空气净化器,空气能热水器,空调,快速烹饪机,烹饪机,破壁机,取暖器,燃气热水器热水器,扫地机,微波炉,微蒸烤一体机,西式烹饪机洗碗机,洗衣机,消毒柜,新风机,烟机,饮水机,浴霸,灶具,蒸箱,智能床中央空调,除湿机,大烤箱,空气炸锅,空调扇,料理机,嵌入式蒸箱,微波饭煲微波烤箱,小烤箱,蒸烤炉;DeviceControl: 电器控制,包括如下意图intent: DevicePowern、DevicePower0ff、DevicStart、DeviceStop、DeviceResume、DeviceVolumeControl、DeviceSetFunction;DevicePower0n: 开启设备,包括如下槽位slot: deviceName、deviceVerb、location、duration、frequency、negative、allVerb、timePeriod;DevicePower0ff: 关闭设备,包括如下槽位slot: deviceName、deviceVerb、location、duration、frequency、negative、allVerb、timePeriod;deviceVerb: 设备上的操作,包括: powerOn、start、power0ff、stop、cancelpowerOn:开机;start:启动poweroff:关机;stop:停止;cancel:取消;allVerb:表示所有的意思;neqative:表示否定的意思:deviceAspect:timePeriod: am(上午) 、noon(中午)、pm(下午)location:表示室内位置,包括: 阳台、客厅、主卧、次卧、厨房、浴室; |

  1. 问题及解决

问题1: 测试发现,定义示例(用户+助手)的语种直接影响返回结果的语言,如果在用户设置中语言是中文,当真实提问是用其他国家的语言,chat-gpt也能正常回答,但是会自动把结果文本中的相关协议命令翻译成提问语种的文本,这样导致在下发控制指令给设备时无法识别的后果,如下所示

解决问题1: 提前在示例中定义好所会涉及的语言提问,然后给出统一的语言回答,这样尽管使用不同的语言提问也会得到统一语言的协议指令

引出问题2: 由于我们真实设备的出货国家很多,涉及不同的语言,所有的语言示例都需要设置,这样会使chat-gpt响应很慢

解决问题2: 在移动端录入语音文本时,限定每次只能说一种语言,在访问coolita后台时,带上语言字段即可,这样每次调用chat-gpt时只需要设置相应的语言对应的示例即可,而不是设置所有可能语言的示例

问题3: 本地测试访问chat-gpt时,使用时间都在(5-11秒),该问题和设置示例多少没有关系,就是响应慢

解决问题3: 23年7月份gpt-35-turbo已有最新api版本(2023-07-01-preview)推出,该版本在响应速度上有很大提升!本地测试只需要1~6秒

  1. 价格明细

    1.    实时语音转文本(以东南亚区域为准)

    模式价格(每小时)每15秒
    即用即付标准语音转文本(1=1)=1 每小时$0.004167每15秒
    模式价格(每月)每15秒
    承诺层级- 2,000 个小时的定价为 1,600,超额1,600,超额0.80 每小时
    • 10,000 个小时的定价为 6,500,超额6,500,超额0.65 每小时
    • 50,000 个小时的定价为 25,000,超额25,000,超额0.50 每小时 | - $0.003333每15秒
    • $0.002708每15秒
    • 0.00208315承诺层级((使用连接容器:把微软SST服务部署在自己的服务器上,本身微软会用工具监控实际使用流量并收取费用))2,000个小时的定价为0.002083每15秒 | | 承诺层级((使用连接容器:把微软SST服务部署在自己的服务器上,本身微软会用工具监控实际使用流量并收取费用)) | - 2,000 个小时的定价为 1,520,超额$0.76 每小时
    • 10,000 个小时的定价为 6,175,超额6,175,超额0.62 每小时
    • 50,000 个小时的定价为 23,750,超额23,750,超额0.48 每小时 | - $0.003166每15秒
    • $0.002583每15秒
    • $0.002每15秒 |
    模式价格(每年)每15秒
    已断开连接的容器(把微软SST服务部署在自己的服务器上,微软不做流量监控统计,用户直接买断一年)- 每年$74,100,每年最大使用量12 万小时,每月预计使用量1 万小时
    • 每年285,000,每年最大使用量60万小时,每月预计使用量5万小时285,000,每年最大使用量60 万小时,每月预计使用量5 万小时 | - 0.62 每小时, $0.002583每15秒
    • 0.48每小时,0.48 每小时, 0.002每15秒 |

      官方网址:azure.microsoft.com/zh-cn/prici…

    1.    Azure OpenAI (以美国东部区域为准)

    3.5版本(0613)Prompt tokensCompletion tokens
    gpt-35-turbo$0.0015 per 1,000 tokens$0.002 per 1,000 tokens
    gpt-35-turbo-16k$0.003 per 1,000 tokens$0.004 per 1,000 tokens
    gpt-4

      注:token表示模型生成的文本长度

       * 对于英文而言,一个单词通常等于一个token,因为英文中的单词通常在空格或标点符号处分隔

       * 对于中文而言,一个汉字通常被视为一个token,因为中文中的汉字通常不能被空格或标点符号分隔

      官方网址:azure.microsoft.com/zh-cn/prici…

    1.   成本预估

    比较微软语音
    STT(一次5秒)0.001389STT+0.001389(STT)+0.000002*625+0.0000015150=0.0000015*150=0.002864
    每个月(20次请求,月活跃设备数:735643)73564320735643*20*0.002864=$42137.63