TL; DR#
我們團隊於 4 月 8 日~4 月 10 日參加了即刻公司舉辦的 Hack Engine 活動,本文描述了我們的專案 Flaneur 誕生的過程,她是一個使用人工智慧生成音樂、聲音和內容的網站,旨在讓用戶感覺像是與一個老朋友一起散步。作者還討論了其他在 Hack Engine 活動中展示的專案,包括旅行規劃和泛知識管理。
Hack Engine 是做什麼的#
以下是 Hack Engine 的官方介紹:
Q: Hack Engine 和 Hackathon 有什麼區別?
A: 沒有區別。只是除了 Hackathon,我們也是孵化器、基金、alumni 創業者網絡。
Q: 那不就是 Y Combinator 嗎?
A: 是的。
簡單來說,Hack Engine 組織了一個 AI 主題的 Hackathon 活動,一支隊伍最多 5 人,需要在 48 小時內完成一個小產品的開發並進行演示。
我們團隊也非常關注生成式 AI 的發展和應用,加上我自己是老即刻用戶,很快便決定參加了。我們很好奇大家能把 AI 用成什麼樣子,也想認識一下熟悉的 ID 背後的真人。
我們團隊由 5 人構成:後端工程師 @ 晓,前端工程師 @ Edison,設計師 @ Brant,打雜的 @ Jason,另外從滑雪群裡 (?) 抓來了算法工程師 @ York 作為外援。我們團隊幾乎沒有參加 hackathon 的經驗,所以出發前請教了一下 @Junyu。豌豆荚應該是國內最早辦 hackathon 的公司,通常是 24 小時內開發一款小應用;我問到最深刻的事情,@Junyu 抬頭看了看天 (調用雲計算?),講起有一年 hackathon 剛好碰上北京下特大暴雨,正好大家一起通宵,中間還考慮要不要出去救人。@Junyu 給了我三個錦囊妙計:最重要的是開發完,其次是有趣,再其次…… 沒了。
因為題目是 kickoff 當天才會公布,我們並沒有做太多其他準備。工程上,我們部署了一台可以運行 Stable Diffusion 的伺服器,另外準備了兩個不同帳號的 OpenAI API,以防臨時被封。另外結合 @Junyu 的錦囊妙計我們確定了選題的幾個原則:
- 好玩有趣,足夠小 / 垂直
- 兩天能做出來
- 或者兩天做不出來但是足夠震撼(可以只放一個視頻作為 demo? ((fake it till you make it
Copilot for ?#
週六上午 9:30,題目公布:Copilot for X。
Copilot for X,X = anything,所以就什麼都沒說啊!為了避免思路過早收斂,我們決定先各自想想,再碰頭討論。我本來想趁此機會 social 一波,沒想到其他隊伍都在熱火朝天地討論甚至已經開始動手了,驚。等到我們該碰頭討論了,肚子已經餓了,還是先去填飽肚子吧。
活動在五角場,我們都不熟,也不知道去哪裡吃飯,乾脆一邊溜達一邊討論,於是靈感來了!
上海是一座非常適合散步的城市,我想起多年前有次在上海散步,大概是夏天的晚上,我一個人在衡山路溜達,吹著晚風,聽著歌,十分愜意。當時聽的歌是舒淇的 Tram ,來自 LV SoundWalk 系列中的香港專輯 (沒錯是香港)。LV 選了香港一些標誌性的地點,請了當地的音樂家譜曲,請舒淇配音介紹,融入故事,非常好聽。不過這個系列在國內只有北京、上海、香港三張專輯,一下就聽完了。北京是巩俐配音,上海是陳沖配音,強烈推薦真的按照專輯裡的地點順序走一走,一邊聽歌。
整個系列裡我最喜歡的還是這首 Tram,舒淇的聲音實在太好聽了!所以我想到,如果用 AI 生成類似的內容,還可以加上 AI 生成的背景音樂,應該挺不錯的。
我們討論了下,確實可行,想法也有了一些延伸:比如可以加上一些更有時效性的信息,如當時的天氣、用戶的運動狀態、步頻,這樣哪怕在同樣的地點打開,每次聽到的內容也會不一樣;可以多抓取一些信息來介紹附近的地標建築。
我們梳理了需求,這個小產品大概會有以下特點:
- 完全不需要操作,打開就能用
- 根據當前的位置、天氣、運動狀態等信息,生成匹配步速的背景音樂
- 用好聽的女聲向你介紹附近街區的歷史、故事,就像有個真人在陪著你散步
- 會預先生成所在街區和附近街區的內容,這樣你可以一直散步,內容不會中斷
最終的效果是一個簡配版的 LV SoundWalk。或者從另一個角度理解,LV SoundWalk 過於精英了,只有有限的幾個地點。而事實上我們生活的每一寸土地都有自己的故事,每個地方都值得擁有自己的 SoundWalk,所以也可以理解為 SoundWalk 民主化。
週六下午兩點完成構思和分工,開幹!
Flaneur 的誕生#
@Junyu: 做產品的第一步,先買一個域名
首先,我們需要給這個產品起一個名字。
上海是一座非常洋氣的城市。我剛來上海那天,從機場坐地鐵到市區,走出地鐵站看到有位衣著非常考究的少女,手裡捧著一束花,用英文報紙包著。上海真洋氣啊!我不禁感慨。走近一看,我發現我錯了,不是英文報紙,是法文報紙。上海真是太洋氣了!我不禁感慨。
由於是在上海散步給我的靈感,我們也是在上海開始創造這個小產品,那麼一定得要一個洋氣的名字才行!
於是我們給這個產品取名 Flaneur,法語中「漫遊」的意思,特指「無所事事的漫遊」。鑑於 Flaneur 沒有任何交互功能,這個名字實在非常貼切。
Flaneur 的實現大概可以歸納為以下幾個步驟:
- 獲取用戶的狀態信息,如地理位置,運動狀態
- 抓取該地理位置相關的信息,如當時的天氣、維基百科介紹、POIs
- 用 GPT 生成一段描述,涵蓋 #2 中的信息
- 將 #3 中生成的描述,用 TTS 轉換成真人的發音(舒淇)
- 根據 #1 & #2 中的位置、天氣、運動狀態等,生成一段合適的 BGM;如果是散步則舒緩,如果用戶在跑步則可以高亢一些
- 把 #4 & #5 合併音軌播放出來
- 為了方便演示,我們還是需要一個界面,可以滾動展示 #3 中的描述
工程上並沒有太多難度,唯一遇到的問題是網頁無法獲取用戶的運動狀態,我們決定放棄這個信息。有趣的部分在於 AI 相關的實現,這部分過程也讓我們很有啟發。AI 部分可以分為:文本生成,文本轉語音 (TTS),音樂生成三個部分。
LV SoundWalk 系列的念白都非常有味道,結合了當地的歷史和特色,讓 GPT 生成類似風格的文本就很關鍵。GPT 主要由我來調教。我以五角場為例,找了一些維基百科上的資料作為 prompt 給 GPT,讓他扮演「伴遊」來介紹五角場,但是這樣生成的文本都非常「導遊」。我想到可以加入一些更有「臨場」的描述,如「你剛剛路過一扇古樸的門」,這樣效果好了一些,可 GPT 還是忍不住說「歡迎來到五角場」或是「你好,老朋友」這樣的話,而我認為好的效果是一個溫柔的女聲直接「闖」進你的耳朵,不用客套寒暄,直接開始和你對話(不然我會不好意思,畢竟是一個聲音很好聽的女聲)。
後來我突然想到,讓 GPT 扮演「向盲人朋友介紹附近街區」,這個設定下效果非常不錯!但 GPT 總是忍不住在最後加上一句「儘管你看不見,但……」這樣的安慰。同樣思路下我調整了 prompt,於是最終 prompt 和效果是這樣:
TTS 是整個過程中最有挑戰的部分!TTS 即語音轉文字其實有很多成熟的方案了,比如經常在抖音上聽到的「家人們,誰懂啊」和「注意看,這個男人叫小美」,但 Flaneur 顯然不能用這麼沒有逼格的聲音,不是舒淇也至少得是高圓圓吧!所以我們調研了一下定制化的 TTS,發現有兩個方案:
- MockingBird:一個開源的模型,只需要幾秒鐘的源音頻就可以生成任何文字的朗讀,需要自己部署,演示效果尚可
- 11Labs:上傳一段 10m 的音頻文件就可以生成任何文字的朗讀,效果非常驚艷!付費(看起來不貴)。缺點是只支持英文。
其他還有些國產廠商的聲音定制方案,但是需要 15+ 工作日和十幾萬的費用。。。似乎他們用的都是很古早的技術,所以成本高企。
@ York 花了非常多的精力部署 MockingBird 模型並進行優化,但最終效果依然乏善可陳。我們研究了模型背後的技術,MockingBird 是基於上一代的 GAN 的,可能這是效果一般的原因。
@ York 苦逼調模型的同時我開始玩 11labs 了。我首先嘗試了舒淇的聲音 + 中文朗讀,出來的效果像是剛考 HSK 的老外念中文。舒淇的聲音 + 英文則少了點感覺,沒有那麼驚艷。那如果用大家熟悉的外國女星呢?我第一反應就想到了 Scarlet Johansson 和 HER 這部電影。
結果效果非常驚艷!雖然沒能「擁有」舒淇,但我卻意外收穫了 Samantha,還要什麼自行車!
家人們誰懂啊!
音樂生成則是最平常的部分。很多年前就有根據步頻生成對應 BPM 的 BGM 的軟體了,沒有太多想像力。加上時間有限,背景音樂我認為不花太多精力,因此決定用 AI 預先生成一堆不同 BGM 的音樂,demo 的時候播放現成的就可以了。
因為界面很簡單,我們第一天就完成了界面的開發和接口適配;花時間最多應該的應該是 @晓 負責的後端和 @ York 負責的 TTS 部分,我們在第二天傍晚調通了所有接口;兩天都是 12 點準時打開離開會場,很多團隊還在肝。
溜了溜了
在?看看效果#
下面請看我們的演示視頻:
簡單講解一下:
- 打開網頁就能用,無需任何操作
- 所有內容都是 AI 生成的,包括內容、音樂和 Samantha 性感的聲音(音樂雖然是預先生成好的但也是 AI 生成的
- 我們甚至植入了一段廣告作為彩蛋(說不定真的可以商業化呢
體驗地址:https://flaneur.polytimeapp.com/
文末閱讀原文也可以打開,請在移動端打開
打開後需要點一些氣泡中間開始播放,現在加載還是有些慢,生成的信息也有些單調,請給 Flaneur 一些耐心。
我們最早構思的時候,完全以 LV SoundWalk 為靈感。但當我真的用的時候,聽到 Samantha 聲音的介紹,我很想和她對話聊天!
我很喜歡散步,有時候是為了思考,有時候是和朋友一起。最舒服的狀態其實是去一個陌生的街區,和「一個很熟悉的朋友」散步,我經常有些奇怪的聯想和很冷的吐槽段子,陌生的環境會讓我有更多靈感和線索,邊散步邊講這些還有人回應就是最舒服的狀態。
進一步地,如果加上調用手機的攝像頭能力,用 CLIP 模型理解圖像並把這個作為 prompt 的一部分給 GPT 生成內容,就真的可以讓 Samantha 啊不對 Flaneur 看到你看見的東西,她真的就像一個陪你散步的老朋友,聽你扯淡,陪著你走過一條又一條街道。就像電影 HER 裡一樣。Her 已經是整整十年前的電影了,Her 的取景地也恰好在上海。
有種夢想照進現實的感覺,wow
Demo Day!#
Demo Day 就是一百支隊伍要在一天內展示自己的成果,非常炫酷!
每支隊伍只有 5min 時間,超時會被無情打斷,非常殘酷!
迫不及待看到大家的作品,一庫一庫!
我們的展示被排在倒數第四個進行,到那個時候我其實已經很困了。。不過進行的很順利,想講的東西也講出來了,所以並沒有太多可寫的。
我認真聽了幾乎所有項目,並給喜歡 / 有趣 / 印象深刻的項目做了筆記。還是不如前輩勤奮,@junyu 給每個項目都認真做了記錄。因為主辦方應該有些保密的考量,所以我只寫寫抽象的感想吧。
看到了幾個 AI 與科技向善的結合,非常喜歡。生成式 AI 的這波火爆讓很多朋友擔心自己未來會不會被 AI 取代(尤其是律師、程序員、投研這樣的職業),恰好昨天和朋友聊起人類歷史上的技術變革,其實每次都是對人本身的解放 —— 短期也許會有一些人受影響失業,但很快就會發現人們其實是被從「不那麼人的工作中」解放出來去做「更適合人本身做的工作」。AI 可以幫營銷號灌水,也可以幫視障群體更加無障礙地與世界交互。
有好幾個項目是旅行規劃為主題的。我們也考慮過這個主題,但發現可能面臨的問題是我們沒有數據可以用。航班的動態價格、酒店的房間報價、甚至地圖路線,這些都是約束條件,而這些數據全都被 OTA 服務商掌握並有嚴格的反爬策略,所以很可能做出一個美麗的產品卻沒有任何數據可用。移動互聯網時代以來,數據被大公司牢牢把控,並被困在一個個 app 孤島中,用戶也形成了「打車去滴滴」「視頻去抖音」「活腻了去百度」這樣的認知,然而他們本質上都是「信息」,而不是「視頻 / 文字 / 語音 / 地圖」或是「筆記 / 郵件 / 日程 / TODO」,很難說這不是「互聯網的一段彎路」。
Hack Engine 最多團隊做也是我最感興趣的主題其實是「泛知識管理」。GPT 本身是一個語言模型,不具備邏輯推理能力,而人類的知識其實存在於各種邏輯關係中,「地球是圓的」這個命題不重要,「重力使得地球的物質向中心聚集,因此地球形成近似球體」這個命題是重要的,知識論將知識定義為 Justified True Belief,JTB,即知識需要同時滿足以下三個條件:
- 某人相信某件事;
- 這個信念事實上是真的;
- 這個信念是有理由證明的。
三個條件缺一不可,舉幾個反例:重力使得地球的物質向中心聚集,因此地球變成了一個 Bagel(信念事實上是假的);因為地球內部有個倉鼠在跑輪子,所以地球是圓的(該信念的證明是錯的)。
GPT 全名 Generative Pre-Trained Transformer,本身是一個「大語言模型」,ChatGPT 的推出更像是一個臨時的、用來搶佔用戶注意力和數據的舉動,並不一定 GPT 最好的形態 / 應用就是「對話式的」,而現在大家都在做對話,我認為有點被 OpenAI 帶溝裡去了。另外剛才論述過,GPT 不具備邏輯推理能力,因此問 GPT 知識性問題是不明智的,相信大家都看過 GPT 一本正經地胡說八道(所以 GPT 又名狗屁通)。
另一方面,我個人認為 GPT 非常適用於「限定信息下的」內容處理及生成,例如 Flaneur 的所有原始信息是由我們提供的;例如先幫我篩選一遍 Read it later 列表;例如生成文章的總結(文章開頭的 TL;DR 就是 GPT 幫我寫的);例如幫我自動建立知識庫中的關聯(其實只需要 embedding 就可以了);例如根據我寫的碎片信息生成一篇新的文章等等……
我把這些稱為「泛知識管理」,這個主題我非常有興趣和熱情,同樣對這個主題感興趣的朋友歡迎一起交流!
共建人類巨靈
Ending#
整個 Hack Engine 非常緊湊,demo 按時甚至提前展示完,週一當天晚上就公布了結果。Flaneur 並沒有入選,還是會感到一些遺憾的。不過這兩天我們都非常享受過程本身,度過了一個難忘的週末;上海這幾天天氣也很好,天氣預報本來有雨,*** 一來,天氣晴朗!
上海好像總是給我類似的感受:有很美好的開始和過程,在結尾留下一些遺憾。
Anyway,非常感謝我的團隊,額外感謝 @ York 同學從杭州跑來參加(我們居然忘記合影了 TAT)
需要特別感謝一下主辦方即刻團隊,我們在現場有近乎完美的體驗,沒有遇到任何問題,完全不像是第一次辦這樣的活動。Hack Engine 在細節處也非常用心,例如參賽證是專門設計過的,這細節,啧啧。
比字節的工牌還高級,祝即刻公司早日收購字節跳動
雖然沒有入選,Flaneur 還是受到了廣泛的喜歡,好多朋友問我 Flaneur 會不會繼續開發,這讓我們非常開心。說實話我們也沒想好,做一個 demo 和做一個真正的產品還是很不一樣的,現有的技術能否達到我們預期的效果也需要繼續調研,我們團隊也面臨一些困難很難騰出精力和資源再做一款新產品了。
Anyway, 如果你也喜歡 Flaneur,請不吝讚美告訴我們!