2016年,米哈遊掏空家底,all in 遊戲項目《原神》,追尋轉型之路。2020年全開放式冒險遊戲《原神》問世引發遊戲圈現象級熱議,精美的製作,3A級的畫質,更是讓遊戲在2021年一度登頂56國排行榜。
作為一款角色養成類遊戲,原神遊戲本身還是還是比較肝的,再加上核心玩法較為簡單,遊戲後期版本更新緩慢,遊戲時間久了之後部分玩家難免產生無聊,卻又“食之無味,棄之可惜”的感覺。
言出法隨,語音玩原神在閒着無聊的時候,總有一些大佬的腦回路與眾不同,想着整點活。這不,b站硬核整活區up主“薛定諤の彩虹貓”就通過AI算法實現語音控制原神,直接將玩家變成了神奇寶貝訓練家,建議遊戲改名為“精靈寶可夢:原神”。
具體戰鬥效果,讓我們一起瞅瞅下面的動圖。
隨着系統提示“在360秒內擊敗8只怪物”,4只火史萊姆來勢洶洶。
原神訓練家氣定神閒喊出了一句“用戰術三攻擊中間的火史萊姆”,畫面內出現像戰鬥機一樣的綠色追蹤框。
神裏綾華向史萊姆跑去,隨後切換鍾離發動技能“元素戰技·地心”打出aoe傷害同時套盾,隨後凌華再一次登場,一招“神裏流·霰步”,打出成噸元素傷害,在火史萊姆的爆炸中,結束戰鬥。
作者還預設了不同的戰術方案。在應對火系深淵法師的時候。先是一句“攻擊中間的火深淵法師”,角色開始自動尋怪。
來到怪物身前時,執行戰術一。迪奧娜以迅雷之速使出“貓爪冰冰”技能打出傷害的同時向後方位移調整位置及套盾,再之後神裏綾華登場,一招霰步欺身上前,打出combo傷害。
不過,在演示過程中,我們也發現,戰術啓動後的角色,其操作行雲流水,非常的絲滑。但是,戰術還沒啓動之前,卻有點呆呆的,來自AI的仁慈[doge]。
那麼,這種用嘴打遊戲,實現言出法隨,輔助玩家練就三寸不爛之舌的AI是怎樣製作出來的?
三大AI工具,打造智能指令系統視頻作者“薛定諤の彩虹貓”分享了他的方法。實現AI語音玩原神,主要涉及到時下流行的“XVLM+WeNet+STARK”等三大AI主流領域。
看到這裏,有的小夥伴可能會表示“説得好,這些字母拆開來我都認得,拼在一起就是我不認識的樣子了。”
小夥伴們彆着急額,接下來讓我們一起了解下這三個工具的用處。
在以往,我們要操作遊戲角色進行近戰的操作邏輯是:1、看到敵方目標。2、鎖定目標,向目標角色移動。3、發動攻擊。
通過語音實現遊戲操作,同樣也是需要完成上面3個步驟。讓我們一起拆解一下作者在遊戲中的指令,解析這套AI的工作流。
如上圖所示,當作者説出“用戰術三攻擊中間的火深淵法師之後”。讓電腦執行了“語音指令識別——圖像識別目標——角色行動”這三大步驟,整個過程有點類似於面向遊戲定製了一個語音助手,就像“嘿,Siri,打開原神”。
第一步:語音指令識別
要讓設備聽懂我們的指令,我們就需要一個翻譯官,將我們説的話轉變成機器能夠聽得懂的計算機語言,WeNet就是我們和機器對話的翻譯官。
WeNet是一個面向生產的端到端語音識別工具包,在單個模型中,它引入了統一的兩次two-pass (U2) 框架和內置運行時來處理流式和非流式解碼模式。其語音識別正確率、實時率和延時性都有着非常出色表現,獲得了京東、網易、英偉達、喜馬拉雅等公司語音識別項目的採用。
用WeNet識別咱們玩原神的語音指令,需要經過“準備訓練數據”、“提取可選cmvn特徵”、“生成標籤令牌字典”、“準備WeNet數據格式”、“神經網格訓練”、“用訓練後的模型識別wav文件”、“導出模型”等6大步驟。
上面的東西用大白話講就是,準備一些音頻文件,同時標註我這些音頻文件講了啥,然後讓機器去學習識別這些音頻文件並生成標籤。上述訓練完成以後,以後我們對機器説話,WeNet就能把我們的話翻譯成機器聽得懂的話。
第二步:解析語音指令特徵
有了WeNet的助攻之後,我們實現了説出的話讓機器聽得懂我們説的是啥之後,我們還要讓機器將聽到的東西跟畫面中的東西對應上,這就輪到第二個工具“X-VLM”登場了。
X-VLM是一種基於視覺語言模型(VLM)的多粒度模型,由圖像編碼器、文本編碼器和跨模態編碼器組成,跨模態編碼器在視覺特徵和語言特徵之間進行跨模態注意,以學習視覺語言對齊。那具體這個工具是咋實現識別對象的呢?
上圖展示了X-VLM的工作流程。圖片左側為工具視覺概念的編碼過程。工具包的圖像編碼器基於Vision Transformer實現,輸入的圖片會被分成patch編碼。然後,給出任意一個邊界框,靈活地通過取框中所有patch表示的平均值獲得區域的全局表示。接着該全局表示和原本框中所有的patch表示按照原本順序整理成序列,作為該邊界框所對應的視覺概念的表示。
(字我都認識,連在一起怎麼就是我不認識的樣子了?)
怎麼文章看着看着變成做閲讀理解了,讓我們再多看億眼。
上面這段話的意思,通俗點講就是將圖片切割成方塊,並且預組合這些方塊。比如組合成“一個男人揹着揹包”的圖片,或者組合成“男人揹着揹包過馬路”的圖片。
你要做的就是告訴機器這些組合和文字的對應關係,接着讓設備進行機器學習。
通過這樣的方式獲得圖片本身和圖片中視覺概念(V1,V2,V3)的編碼。與視覺概念對應的文本,則通過文本編碼器一一編碼獲得,例如圖片標題、區域描述、或物體標籤。
這一頓操作下來,小編也被繞暈了。這玩意的作用有點像我們的眼睛,當我看到一個“書包”,雖然我沒見過這個款式的,但根據特徵提取,我知道這個東西就是書包,X-VLM就是這樣一個工具。
X-VLM可以在接收WeNet輸出的文本信息後,將圖像中相關聯的物件提取出來,實現語言與視覺相關聯。到這裏,我們可以實現讓電腦知道我們説的話指的是圖片裏面的啥玩意了。
第三步:追蹤圖像
在使用了X-VLM和WeNet之後,我們成功讓設備聽得懂咱們説的是啥玩意了,接下來要做的就是實現“追蹤目標”,聽起來是不是很酷炫,有種開戰鬥機發射追蹤導彈的感覺~
相信不少小夥伴們都猜到了,這剩下的最後一個“STARK”就是用於實現圖像追蹤功能的AI工具。
Stark是最新的SOTA跟蹤模型,模型使用了transformer來結合空間信息以及時域信息。
模型包括一個encoder,decoder以及prediction head。其中encoder接收三個輸入:當前幀圖像,初始目標以及一個動態變化的模板圖片。由於模板圖片在追蹤過程中是動態變化,不斷更新的,因此encoder可以同時捕獲到目標的時域和空間信息。
獲取目標信息以後,工具會通過預測左上與右下角熱力圖的方式,在每幀圖像中得到一個最優的邊界框,並且可以直接在GPU端運行。
簡單説就是,在我們通過X-VLM確定要追蹤的目標以後,Stark就像鋼鐵俠Tony Stark的追蹤系統一樣,會記錄對象在靜止狀態和動態狀態下的樣子,處理分析之後實現追蹤動態對象。
那麼,講到這裏,我們已經基本明白這語音玩原神三大技術的原理。那角色是怎麼動起來執行戰術的呢?
其實實現角色自動攻擊、釋放技能這一塊,反而是AI語音玩原神中最容易實現的一個環節。這個功能可以通過宏指令或者代碼編程來實現。小編特意到作者分享的代碼文件中瞄了一眼,下面是部分代碼的展示。
這一段操作代碼使用python寫的,邏輯也相當的簡單,就是執行一串預設好的按鍵指令。上面圖片展示的應該是對應戰術一的操作。其中key跟mouse後面的數字或者字母對應了切換角色和釋放技能。
代碼也解釋了為啥角色執行完戰術之後就杵在原地發呆,因為沒有了後續的指令和輸入。
總的來説,如果有小夥伴想簡單嚐鮮一下這個AI語音玩原神,可以直接下載作者分享的代碼,運行程序即可。你只需將英雄陣容及順序設計成和作者一樣,就可以達到作者視頻展示的的效果了。
當然,如果小夥伴們想要玩出自己的花樣,也可以直接改這段操作代碼,實現不同的陣容及技能釋放組合,然後記住自己改的是哪一套戰術就行了。
當然,如果你想把遊戲完成比較中二的,像下面這樣的:
就決定是你了,神裏綾華。(切換角色)
靠近敵人之後使用霰步。(釋放技能)
辛苦你了,綾華,回來吧。(切換角色)
小編也幫你想好了要改哪些代碼,你把對應切換角色的快捷鍵以及技能鍵替換到操作代碼裏面就像了,但同時你還要錄一段語音到WeNet,讓它進行學習,知道你在説啥。(PS:儘可能用一句話做多點事,因為AI執行比較忙,這也是為啥作者要用戰術一二三的原因)
當然還有神仙大佬在視頻裏給出了其他的建議。比如加入SLAM工具,實現360°方位檢測,讓角色能夠在遊戲裏追蹤不同方位的敵人,自走地圖炮了屬於是。
眼睛、手勢都能玩,AI玩遊戲姿勢還有這些
除了ai語音玩遊戲外,b站還有很多大佬折騰出了別的玩遊戲姿勢。
【 圖片來源:嗶哩嗶哩 所有者:Jack-Cui 】
Jack-Cui大佬直接自制ai,用一個普通攝像頭加一台電腦實現體感玩街頭霸王。
【 圖片來源:嗶哩嗶哩 所有者:同濟子豪兄 】
b站up主同濟子豪兄展示的,用WebGazer.js,實現“眼神操控鼠標”,通過眼神來玩遊戲,直接就是眼神殺人術。
通過Mediapipe,用手勢隔空玩遊戲。很有鋼鐵俠操控面板的感覺了!
AI技術,在不同的場合有着不同的應用。而像語音操控、眼神操控這一類技術,直接的受益人就是一些在生活中存在身體缺陷的人。
【 圖片來源:嗶哩嗶哩 所有者:心理諮詢師朱銘駿 】
此前便有一位高位截肢的退役消防員小哥在網上分享了他用嘴巴操作手機玩原神的視頻,等AI語音玩遊戲成熟了,他就可以通過語音更加輕鬆的在原神的世界遊玩。
作者在後期也打算加入“全自動刷本、傳送、打怪,領獎勵一條龍”的AI操作,到時候我們也將看到一個更加有趣的場景,讓我們一起拭目以待。
不懂這些算法的小夥伴們也不用擔心,作者目前已經將源碼分享到了github上,小夥伴們前往下載安裝之後,根據咱們上面説的,改改操作代碼,體驗一把語音玩原神。
源代碼鏈接:https://github.com/7eu7d7/genshin_voice_play
雷峯網