持续更新...

一、核心技术简介

(一)Twilio——云通信平台

       Twilio是一个功能强大的云通信平台,提供多种API以支持语音、短信、视频和聊天等功能。在AI Order项目中,Twilio的主要作用是实现IVR(Interactive Voice Response)系统,使用户能够通过拨打电话进行语音点餐。

1.虚拟号码配置

概述:虚拟号码是用户接入AI点餐服务的入口。每个餐厅都会配置一个独特的虚拟号码,当用户拨打这个号码时,电话会被转接到我们自定义的IVR程序中。

实现:我们通过Twilio的API,在创建餐厅时,自动购买和配置虚拟号码。每个虚拟号码都设置回调URL,以便接收电话事件。

使用场景:用户拨打虚拟号码后,电话会通过Twilio转接到AI Order的IVR系统,开始语音交互。

2.回调接口设置

概述:Twilio允许我们设置多个回调接口,用于处理不同的电话事件,如来电、挂机等。

实现:通过Twilio Console或API,我们可以为每个虚拟号码配置多个回调URL。当用户拨打电话时,Twilio会调用这些回调URL,将电话事件数据发送给我们的服务器。

使用场景:例如,当用户拨打电话时,Twilio会调用我们的回调接口,传递来电信息,我们的服务器接收后,通过STT服务处理语音内容。

3.IVR工作流程

概述:IVR系统是AI Order的核心组件之一,使用户可以通过语音与系统进行交互。

实现:我们使用Twilio提供的TwiML(Twilio Markup Language)来定义IVR系统的行为。TwiML是一种基于XML的语言,用于描述如何处理电话呼叫。

使用场景:用户拨打餐厅的虚拟号码后,系统将首先播放餐厅自定义的欢迎语,例如“Welcome to Foley Restaurant. What would you like to order today?”,用户说出需求后,Twilio将语音数据转发到我们的STT服务进行语音转文本,再交给AI处理得到响应文本,最后通过TTS服务将文本转为语音回复给用户。

       云通信平台有很多,那么为什么选择Twilio作为云通信平台呢?第一是稳定性,Twilio作为最大的云通信平台,其基础设施保证了服务的高可用性,即使在高峰期也能保证用户体验;第二是易于集成,Twilio与其他云服务的良好集成性,使我们能够方便地将其与Azure、Google Voice等服务结合使用;第三是技术支持,Twilio提供24/7的技术支持服务,确保我们在遇到问题时能够及时得到帮助。(项目开发中,我遇到许多问题,都会提交工单询问,都得到了及时有效的解答,是真的不懂的API,直接编写代码讲解的)

(二)Google Voice——通讯服务

        Google Voice 提供了一个简单易用的虚拟电话服务,是开发和测试阶段的重要工具。在AI Order项目中,Google Voice主要用于模拟真实的电话环境,以便开发者能够在不同的场景下进行测试和调试。

1.用于开发测试:

概述:在开发和测试阶段,Google Voice可以为开发者提供一个虚拟电话,用于模拟用户拨打电话和接收IVR系统的响应。这使得开发者可以在不影响真实用户的情况下,进行各种测试和调试。

实现:开发者可以通过Google Voice申请一个虚拟号码,使用该号码进行电话测试。Google Voice的接口简单易用,可以方便地与Twilio集成,模拟真实用户的操作。

使用场景:开发者使用Google Voice拨打AI Order的虚拟号码,模拟用户点餐过程,测试系统的语音识别和响应速度,确保在实际应用中系统能正常工作。

看了眼通话记录,几个月打电话测试的次数已经600+了,我成为了客服 = = 。

(三)STT——语音识别

        语音识别(Speech-to-Text, STT)技术是AI Order项目的核心组件之一,用于将用户的语音指令转换为文本,以供系统进一步处理。在AI Order项目中,语音识别技术的主要任务是准确快速地将用户通过电话输入的语音转化为可理解的文本,进而实现智能点餐服务。

1.技术选择

        我们对比了几种主要的STT服务:Twilio默认语音识别、Google Speech-to-Text、Azure Speech-to-Text。

评估标准Twilio默认语音识别Azure TTSGoogle Cloud TTS
准确性一般,像菜名等专业词汇无法准确识别高,可上传专业词汇较高,可上传专业词汇
响应速度最快
多语言支持有限广泛广泛
集成无缝与Twilio集成良好良好
成本免费较高合理
定制化能力较低

        准确性是语音识别技术最重要的指标之一。最终经过实际测试,Azure Speech To Text的语音识别率最高,满足AI Order对于不同语言菜名的识别准确率要求。需要注意的是,本项目中语音识别的准确率必须要达到非常精确,否则将会直接影响到AI对于文本的处理效果,从而导致整个点餐流程并不流畅清晰,因此选择Azure Speech To Text是必要的。

2.优化措施

1)专有词汇训练
       为了提高识别特定菜品名称和成分的准确性,我们对STT服务进行了专有词汇库的训练。通过添加常见菜品名称、成分和过敏原等专有词汇,提高识别的准确性和响应速度。

2)多语言支持
       针对全球用户的需求,我们对STT服务进行了多语言支持的优化。通过引入多种语言和方言的语音模型,确保用户可以使用自己熟悉的语言进行点餐,提高用户体验。

(四)主流AI模型

       在AI Order项目中,我们使用了多种AI模型来实现智能点餐和个性化推荐功能。经过多轮开发与测试,我们重点评估了Azure AI、Claude3、OpenAI和Gemini Pro四种模型及其不同版本。以下是对这些模型的详细对比分析,以及我们最终选择Azure OpenAI的原因。

评估标准Azure OpenAIOpenAIClaude3Gemini Pro
准确性高(特定任务)
稳定性高(特定任务)
多语言支持广泛良好广泛有限
响应速度极快中等
成本中等

        通过对比可以看出,Azure AI在各个评估标准上都表现出色。首先,Azure AI的准确性非常高,能够有效处理复杂和专业的点餐需求,如识别各种菜名和菜单项。其次,Azure AI的稳定性也非常高,保证了在实际应用中的可靠性。再者,Azure AI支持广泛的多语言服务,可以满足不同语言用户的需求。而在响应速度上,Azure AI表现极为迅速,能够在极短的时间内处理请求并返回结果。尽管Azure AI的成本较高,但其在关键性能指标上的优异表现使其成为我们项目的最佳选择。特别是Azure OpenAI中的GPT-3.5 turbo模型,通过Azure提供的企业级快速访问通道,进一步增强了其在准确性、稳定性和集成能力上的优势。

       与其他模型相比,OpenAI虽然在准确性和稳定性上表现同样优异,但其响应速度略逊一筹。而Claude3在准确性和稳定性方面的表现相对较差,尽管它支持广泛的多语言服务。Gemini Pro在特定任务上表现突出,但其总体能力有限,且多语言支持不足。

       综上所述,Azure OpenAI以其卓越的性能和无缝的Azure服务集成能力,尽管成本较高,但其在AI Order项目中的关键应用需求上表现出色,最终成为我们的首选。

(五)TTS——语音合成

       语音合成(Text-to-Speech, TTS)技术是AI Order项目的重要组成部分,它将系统生成的文本指令转换为自然流畅的语音,供用户通过电话听取。通过TTS技术,AI Order能够模拟真实服务员的语音响应,使用户体验更加贴近人类互动。

1.技术选择

       在选择TTS技术时,我们对比了以下几种主流的TTS服务:Azure Text-to-Speech、Google Cloud Text-to-Speech和IBM Watson Text-to-Speech。

评估标准Azure TTSGoogle Cloud TTSIBM Watson TTS
音质
自然度
多语言支持广泛广泛广泛
集成无缝与Azure服务集成良好良好
成本中等

       在综合评估各项指标后,Azure Text-to-Speech凭借其在音质、自然度、响应速度、集成和多语言支持方面的优势,成为了AI Order项目中TTS技术的最终选择。

(六)stripe支付

       Stripe支付服务在AI Order项目中扮演着重要角色,提供了一套全面的在线支付解决方案,确保用户可以方便、安全地完成支付流程。

1.功能介绍

       多种支付方式:支持信用卡、借记卡、银行转账、移动支付(如Apple Pay、Google Pay)、本地支付方式等,覆盖全球市场。

       订阅管理:提供强大的订阅管理工具,支持各种复杂的订阅模式,包括按月、按年、试用期等。

       发票处理:自动生成和发送发票,支持多种语言和货币,方便国际化业务开展。

       反欺诈工具:内置Stripe Radar,通过机器学习和数据分析,实时检测和阻止可疑交易。

       通过集成Stripe支付服务,AI Order项目不仅提升了用户的支付体验,还确保了支付过程的安全性和合规性,为项目的成功奠定了坚实基础。

(七)云打印机

       云打印机在AI Order项目中扮演着重要的角色,它实现了菜品订单的即时打印,使得餐厅能够迅速、高效地处理和准备订单。本项目中采用公司自研云打印机,实现餐厅厨房以及前台,订单数据的打印。通过引入云打印机,AI Order项目有效提升了订单处理效率和准确性,减少了人工干预,提高了餐厅的整体运营效率和顾客满意度。

(八)Vapi.ai

        Vapi.ai 是一个专为开发人员设计的语音 AI 平台,旨在简化语音交互应用的开发过程。它集成了多种语音识别(STT)、大语言模型(LLM)和语音合成(TTS)服务,提供了灵活的开发环境和强大的功能支持,使得构建复杂的语音 AI 应用变得更加高效和简单。

1.功能特点

1)多语言支持
Vapi.ai 支持多种语言,通过不同的语音识别和语音合成提供商,开发者可以为其语音助手配置多语言支持。例如,可以选择 Azure 的 es-ES-ElviraNeural 语音来支持西班牙语​​。

2)集成多种服务提供商
Vapi.ai 允许开发者使用多种 STT 和 TTS 提供商,包括 Deepgram、Talkscriber、PlayHT、11labs、Rime-ai 等。不同的提供商支持不同的语言和语音模型,可以根据需求选择最合适的服务​ ​。

3)低延迟优化
Vapi.ai 对延迟进行了多种优化,如端到端流媒体处理和服务器协同定位,确保语音交互的流畅性和实时性​​。

4)易于集成和扩展
Vapi.ai 提供了简单易用的 API 和客户端库,使开发者可以轻松地将语音 AI 功能集成到各种应用中。无论是 web、移动应用还是硬件设备。

        通过 Vapi.ai 的多语言支持、低延迟优化和丰富的服务集成,AI Order 项目不仅提升了用户体验,还大大提高了系统的响应速度和稳定性,使得语音交互更加自然流畅。这个平台的强大功能和灵活性,为 AI Order 项目的成功提供了坚实的技术基础。

二、系统架构

       AI Order 的系统架构分为前端和后端两部分,各个模块的功能互相配合,确保系统的高效运行和用户体验的优质化。

(一)整体架构

       前端:主要由用户交互界面组成,包括菜单详情界面和订单详情界面,用户通过这些界面进行菜单浏览和支付。
       后端:包含处理业务逻辑和数据存储的部分,包括 IVR 点餐系统、后台管理系统和菜品推荐系统。

(二)各个模块功能详解

1. IVR 点餐系统

       IVR(Interactive Voice Response)点餐系统通过交互式语音应答技术,使用户能够通过自然语言进行菜单查询和点餐操作。用户可以通过电话与 AI 进行互动,完成整个点餐流程,无需面对繁琐的菜单翻阅或使用复杂的应用程序。IVR 点餐系统的设计初衷是让点餐体验更接近于与真实服务员的互动,提升用户的便捷性和满意度。

       IVR 点餐系统的核心在于其强大的语音识别(STT,Speech-to-Text)和语音合成(TTS,Text-to-Speech)技术。

       语音识别技术将用户的语音指令转化为文本数据。这一步骤需要高度精准的识别能力,特别是在嘈杂的环境中或面对口音和方言时。为了实现这一点,AI Order 采用了先进的语音识别引擎,如Azure Cognitive Services,这能够处理多种语言和复杂的语音输入。
自然语言处理(NLP)

       为了理解用户的意图并做出准确的响应,IVR 系统需要强大的自然语言处理能力。NLP 技术使系统能够理解复杂的语义和上下文,确保对用户指令的准确解读。AI Order 使用的NLP 技术来自于先进的 AI 平台,如Azure OpenAI,提供了强大的语义分析和上下文理解能力。

       在用户发出点餐指令后,系统需要将AI响应的文本数据转化为语音响应,这就是语音合成的工作。AI Order 使用的语音合成技术能够生成自然流畅的语音,使用户感觉如同与真实的服务员对话。系统支持多种语音风格和语言,通过像Azure Text-to-Speech服务,实现高质量的语音输出。

       对话管理是 IVR 系统的重要部分,负责维护用户对话的状态并决定系统的响应策略。对话管理器需要处理多轮对话,确保系统能够根据用户的交互做出合适的响应。比如判定结算点餐意图,并自动挂断电话;保存整段通话录音等。

2. 菜单详情界面

       菜单详情界面的主要功能是展示每道菜品的详细信息,包括规格、价格、主要成分等,帮助用户做出明智的选择。这个界面的设计旨在提供用户友好的体验,让用户能够轻松浏览和查询菜单信息。通过提供详细的菜品信息,菜单详情界面不仅提升了用户的点餐体验,还增加了用户对餐厅的信任度和满意度。

       为了提高响应速度,系统使用缓存技术将频繁访问的菜单数据存储在Redis中。当菜单发生变化时,采用双写策略,更新缓存的数据,确保用户始终看到最新的菜单信息。此外,系统能够自动识别用户在通话中选择的交流语言,并展示相应语言的菜单,这大大提高了用户的便利性。

       在菜单界面中,用户可以将菜品加入购物车,并进行订单结算。需要特别注意的是,系统在处理菜单界面和通话后产生的订单数据时,必须保持订单ID一致,并确保订单数据的完整性和准确性。

3. 订单详情界面

       订单详情界面能展示用户的订单信息,包括菜品、数量、价格、总金额、餐厅相关信息、预估取餐时间等信息。用户可以清晰地查看自己的点餐内容,核对每个菜品的详细信息,确保订单的准确性。并且集成stripe支付功能,使用户便捷的移动支付。

       系统通过手机短信发送Stripe支付链接,用户只需点击链接即可进入支付页面,完成支付。这种方式简化了支付流程,避免了复杂的支付操作,提升了用户的便捷性。同时,系统将跟踪订单的状态,从生成到支付完成,再到发票发送,全程进行状态管理。餐厅可以在订单详情界面看到订单的实时状态,了解订单处理进度。

       本项目中,订单类型分为堂食和外卖两种类型。美国税率繁多复杂,又综合不同订单类型,使计算金额及相关税率,成为本项目的难点之一。

4.后台管理系统

       后台管理系统是AI Order的核心模块之一,旨在为餐厅提供强大的数据分析和管理工具,帮助餐厅管理者实时了解运营情况,优化服务,提升经营效益。通过后台管理系统,餐厅可以管理本餐厅的餐厅信息、菜品信息、顾客信息、订单信息、打印机信息以及自定义通话过程中的欢迎语和结束语,并获取多维度的数据可视化和实时数据分析,深入洞察顾客行为和销售趋势,同时集成ChatGPT聊天功能,从而做出更科学的决策。

       餐厅管理:餐厅可以通过管理餐厅的基本信息,包括餐厅名称、地址、联系方式、营业时间等。

       菜品信息管理:餐厅添加、修改、删除、Excel导入导出菜品信息。每道菜品可以记录详细的描述、价格、成分、原材料,价格、税率等信息。实时更新菜单信息,确保顾客看到的始终是最新的菜单。

       顾客信息管理:餐厅可以通过系统管理顾客信息,包括顾客姓名、联系方式、点餐历史等。

       订单信息管理:记录所有订单的详细信息,包括订单号、菜品、数量、价格、顾客信息、订单状态等。通过订单信息管理,餐厅可以轻松追踪订单处理进度,优化订单流程。

       打印机信息管理:管理所有的打印机信息,包括打印机mac地址、名称、打印内容等信息。

       自定义通话欢迎语和结束语:管理者可以通过系统自定义通话过程中使用的欢迎语和结束语,提升顾客服务体验。只需使用任意一种语言填写,将自动生成其他语言对应欢迎语和结束语。

       数据可视化:提供多种图表和仪表盘,展示餐厅运营的各项关键指标,如销售额、顾客数量、热门菜品、菜品库存等。通过直观的图形展示,管理者可以快速了解运营情况,发现问题并及时调整策略。

       集成ChatGPT聊天功能:系统集成了ChatGPT聊天功能,提供智能化服务。ChatGPT可以根据餐厅管理者的问题提供即时、准确的回答,提升顾客满意度

5. 菜品推荐系统

       菜品推荐系统是AI Order中一个重要且智能的功能模块,旨在根据用户的口味偏好和历史点餐记录,为用户提供个性化的菜品推荐。通过推荐算法和机器学习技术,系统能够精准预测用户的喜好。项目基于菜品的特征,如口味、成分、烹饪方式等,系统使用内容推荐算法,为用户推荐相似的菜品。

三、项目难点

       作为我入职以来参与的第一个项目,AI Order对我来说充满了挑战和学习机会。虽然遇到的难点数不胜数,但每次攻克一个问题,都会带来成就感和新的理解。以下是项目中几个主要的难点。

1.高并发带来的数据一致性问题

       AI Order项目中,每个菜品都有对应的库存数量。当某个菜品的库存数量小于1时,表示该菜品售罄;当一条订单记录产生时,菜品库存数量会相应减少,并且每天凌晨所有菜品库存数量会自动恢复到预设值。

       高并发环境下,数据一致性成为了一个重要的问题。例如,当某个菜品只剩下一份时,如果有两位用户几乎同时打电话订购该菜品,就会发生争抢的情况。为了保证数据一致性,采用了以下策略:
       原子操作:使用Redis的原子操作来处理并发请求。具体来说,谁先成功执行Redis的原子操作,谁就能订购这份菜品。这样可以确保在高并发情况下,数据的一致性和正确性。
       支付超时处理:如果用户生成了订单但迟迟未完成支付,系统会自动取消支付链接,并将相应的菜品数量恢复到库存中。这一机制防止了因未支付订单导致的菜品库存不准确问题。

2.多语言的开发

       无论是IVR系统还是菜单详情界面,都需要根据拨打电话时选择的语言,做出动态配置。对于IVR系统,需要组织对应语言的菜单内容、提示词、欢迎语结束语等,同时对语音识别和语音合成的参数进行配置。对于菜单详情界面,需要组织对应语言的菜品信息。并且,整个系统支持动态拓展语言,即填写必要的语音识别和语音合成参数等信息后,使整个系统对于这门语言也能支持。

3.AI模型提示词的优化

       本项目最难的,是对AI模型提示词的优化,因为这部分没法做到完全可控。在AI Order项目中,模型提示词的优化是一个持续挑战,因为这部分难以做到完全可控。如何让AI能够精准按照订餐流程执行,能够处理复杂的菜品信息,能够进行近乎人工客服的自然交流,并形成一定格式的订单项存储到数据库中,都具有一定挑战性。

       而让AI能够产生近乎人工客服的回答,是其中最为困难的,什么时候开始说话,什么时候停止说话聆听,如何控制回答的准确性、简洁性,都需要经过调研和反复测试,对Prompt进行不断的优化。

       因此针对这一问题需要通过不断实验和调整提示词,优化模型的响应质量。这需要大量的测试和数据分析,以找到最优的提示词组合。同时,收集用户在使用过程中的反馈,不断改进和优化提示词,以提高系统的智能性和用户满意度。

       然而,因为本项目初期起步,无论是从资金上,还是数据量上都没有微调模型的条件。因此,在后期项目进行了整体的重构,采用Vapi进行开发。并自定义custom llm模型,使用langgraph构建multi-agent系统,以此保证输出的精确性。

四、项目的运行情况

       目前该项目一期已经结束。AI Order语音点餐系统也对接了  kwickpos  (https://kwickpos.com) 等第三方餐厅平台,上线运行良好。
       这里再次感谢 温浩珉 博士在本项目中的耐心指导。