第 5 章
音乐响起的时刻
2016年9月,字节跳动推出抖音。这款让用户拍摄和编辑15秒钟短视频、添加滤镜并分享的应用,一经推出便吸引了年轻人的关注。然而,在它成为现象级产品之前,团队首先需要解决一个根本问题:在算法理性与人性直觉之间,如何找到那个让音乐与画面共振的精确瞬间。
朱文佳把耳机从头上摘下来,搁在桌面上,耳机线还缠在手指上。屏幕上是一段测试视频,画面里一个女孩在街头转身,音乐卡在第四拍,但画面切换慢了半格。半格。他重新戴上耳机,把时间轴拖回去,又看了一遍。问题不在代码,代码是准的。问题在于“准”本身——第四拍到底应该落在转身的哪一帧,是肩膀先动还是头发先甩,算法不知道,算法只知道时间戳。他把这段视频发到工作群里,附了一行字:卡点不是数学题。
那是抖音原型团队组建的第三周。白板上还留着梁汝波那行红字,没有人擦。每天有人进出会议室,都会看见“不要忘记那个问号”,但没有人停下来讨论它。那个问号太抽象了,抽象到无法写进需求文档。
团队需要解决的是具体的、可执行的问题:拍摄界面放几个按钮,滤镜强度默认值是多少,视频长度上限设成几秒。这些问题像沙子一样填满了每一天,而那个问号像沙子里的水,你知道它在,但你抓不住。
产品原型的第一版死在横屏上。这个方案在内部评审时被否决的过程很短,短到甚至没有形成会议纪要。
朱文佳把原型投到屏幕上,演示了不到三分钟,张一鸣就说了两个字:“横屏?”他的语气不是疑问,是确认。朱文佳点头。张一鸣从椅子上站起来,走到屏幕前,用手指在横屏画面上画了一条竖线。“手机是竖的,”他说,“人的眼睛是竖着看的。你让人转手机,就是在让人做选择。做选择就要动脑子。动脑子就有流失。”
这段话后来被团队反复引用,但在当时,它只是让会议室安静了十几秒。朱文佳没有反驳。他知道张一鸣说的不是产品逻辑,是用户本能。
横屏方案之所以被提出,是因为团队里大多数人是做图文信息流出身的,他们的肌肉记忆是横屏阅读。而张一鸣的肌肉记忆是手机——他每天花几个小时在手机上滑信息流,他知道拇指的舒适区在哪里。
横屏方案被否决后,团队转向全屏竖屏。这个决定几乎没有争议。争议出现在下一个问题上:竖屏视频的拍摄界面,应该放多少功能。
朱文佳让设计师出了一版方案,拍摄界面有七个按钮:滤镜、美颜、贴纸、特效、音乐、变速、倒计时。他把这版方案投到屏幕上,问团队:“如果是你妈,她能看懂几个?”没有人回答。朱文佳自己回答:“一个都看不懂。”他用手指点了点音乐按钮,“这个,她可能以为是播放器。”
七个按钮被砍到三个。砍掉的那四个,每一个都有支持者。支持美颜的人说,美颜是刚需,没有美颜用户不会拍。支持贴纸的人说,贴纸能激发创作欲,是内容多样性的来源。朱文佳没有跟他们争论功能本身的价值,他只问了一个问题:“这个功能,用户需要在拍摄前就想清楚要不要用吗?”如果是,那就放到拍摄后。
拍摄前只有一个任务:让用户按下那个红色的圆点。这个原则后来被总结成一句话:拍摄是冲动,编辑是理性。冲动不能被功能打断。
但音乐按钮留了下来。朱文佳坚持这一点。他的理由很简单:音乐不是功能,音乐是氛围。你走进一个房间,灯是亮的还是暗的,你马上能感觉到。音乐就是那个灯。你不能让用户拍完视频再去选灯,因为那时候房间已经空了。
这个比喻没有被写进任何文档,但它成了团队内部的共识。音乐按钮被放在拍摄界面最显眼的位置,比滤镜还显眼。这个决定在后来被证明是对的,但在当时,它只是一个直觉。
真正的分裂发生在音乐路线确定之后。路线确定是一回事,怎么实现是另一回事。
团队里分成了两派。一派主张“工具化”:把音乐做成一个曲库,用户选一首歌,系统自动匹配视频时长,如果视频太长就截断音乐,如果太短就循环。逻辑清晰,工程简单,用户体验可控。
另一派主张“智能化”:音乐不应该只是被选择,它应该主动参与视频的生成。用户选一首歌,系统根据音乐的节奏和情绪,推荐甚至自动生成视频的剪辑点、转场方式和特效参数。音乐是导演,视频是演员。
工具派拿出了数据。他们分析了当时市面上所有带音乐功能的短视频产品,发现用户使用音乐功能的比例不到百分之十五。大部分用户拍完视频直接发布,根本不碰音乐。工具派的结论是:音乐是锦上添花,不是雪中送炭。先让用户拍起来,再让用户用音乐。
智能派拿不出数据。他们能拿出的只有朱文佳那个“灯”的比喻,以及一个更根本的追问:如果音乐只是锦上添花,那我们凭什么跟快手竞争?快手已经做起来了,它的核心是社交和记录。我们如果也做社交和记录,我们永远追不上。我们必须做一件快手做不了的事。音乐就是那件事。
这场争论持续了将近两周。两周里,团队做了三版原型,每一版都在音乐功能上摇摆。
第一版是工具派方案,音乐曲库放在二级菜单,用户需要主动点击才能进入。第二版是智能派方案,音乐推荐直接嵌入拍摄流程,用户打开拍摄界面,系统就根据时间和场景推荐三首歌。第三版是折中方案,音乐按钮放在一级界面,但点击后进入的是工具派曲库。
三版原型都被否决了。否决的原因各不相同,但核心问题是一样的:用户在三秒内看不懂这个产品要干什么。
朱文佳在这两周里几乎没有说话。他参加了每一场争论,但很少发言。他在笔记本上记满了双方的观点,左边一列是工具派的逻辑,右边一列是智能派的直觉。两列之间画了一条竖线,竖线中间写了一个词:节奏。节奏是他在所有争论中唯一没有听到被认真讨论的东西。
工具派谈的是版权和曲库规模,智能派谈的是推荐和自动剪辑。没有人谈节奏——音乐和视频之间的那个看不见的连接点。节奏是音乐的心跳,也是视频的心跳。如果两个心跳对不上,音乐就是噪音,视频就是幻灯片。
如果对上了,用户感受到的不是“这首歌好听”或者“这个视频好看”,而是“这个视频是对的”。
朱文佳在第三周的一个深夜,把团队叫到会议室。他没有开投影,没有放原型。他让所有人把手机拿出来,打开任意一个短视频应用,随便刷十条视频。
刷完之后他问:“哪条视频让你停下来了?”有人说是一条猫的视频,有人说是一条做饭的视频,有人说是一条跳舞的视频。朱文佳又问:“那条视频有音乐吗?”所有人愣了一下,然后开始回忆。猫的视频有轻快的钢琴,做饭的视频有舒缓的吉他,跳舞的视频有强烈的鼓点。
朱文佳说:“你们记住的不是音乐,但你们停下来的原因里有音乐。音乐没有出现在你们的记忆里,但它出现在了你们的身体里。”
这段话没有立刻说服任何人。但它让会议室安静了很长时间。那种安静和梁汝波开场时的安静不同。开场时的安静是压力,此刻的安静是消化。有人在笔记本上画圈,有人盯着白板上的两条路线来回看。朱文佳没有继续说话。他知道自己已经把该说的说完了,剩下的交给别人想。
安静被一个工程师打破。他叫李磊,后来成为抖音早期核心开发之一。李磊说:“我不管音乐是灯还是骨骼。我就问一个问题:如果音乐是核心,那我们的推荐算法怎么理解音乐?算法现在能理解视频画面,能理解文字标题,能理解用户行为。但算法不理解音乐。它不知道这首歌是欢快的还是悲伤的,是激烈的还是舒缓的。如果算法不理解音乐,那音乐就进不了推荐池。进不了推荐池,音乐就永远是附属品。”
这个问题把争论从产品层面拉到了技术层面。朱文佳后来回忆,那是整个产品打磨过程中最关键的一次转向。
之前所有人都在争论“音乐应该是什么”,李磊把问题变成了“音乐在算法里是什么”。前者是哲学问题,没有标准答案。后者是工程问题,有解。
李磊提出的解法后来被称为“音乐标签体系”。简单说,就是给每一首曲库里的音乐打上结构化标签:节奏快慢、情绪极性、能量强度、适用场景。这些标签不是人工标注的,是算法从音频波形里提取的。提取的准确率一开始只有百分之六十多,但可以迭代。有了标签,推荐引擎就能把音乐和视频内容、用户偏好进行匹配。音乐从“一首歌”变成了“一组特征向量”。
这个方案在内部评审时被快速通过。因为它同时满足了工具派和智能派的需求:工具派得到了一个可扩展的曲库,智能派得到了一个可优化的推荐逻辑。
但朱文佳在评审会后单独找到李磊,问了一个问题:“标签体系建立起来之后,谁来定义标签的标准?是算法还是人?”
李磊没有回答。朱文佳也没有追问。但这个问题后来被证明是抖音整个产品哲学的核心矛盾:算法可以提取音乐的节奏,但算法提取不了音乐的“感觉”。一首歌在什么情境下让人想哭,在什么情境下让人想笑,算法不知道。算法只知道波形。而人的直觉知道感觉,但人的直觉无法规模化。这个矛盾在抖音后来的每一次迭代中都会重新出现。
但在那个深夜,它只是一个被搁置的问题。团队需要先让产品跑起来。产品跑起来的第一步是解决内容供给。没有内容,推荐引擎就是空转。
朱文佳把内容供给分成三条线:第一条线是内部生产,团队自己拍视频上传,保证冷启动阶段有内容可推。第二条线是定向邀请,找一批有创作能力的用户,给他们提供拍摄工具和流量扶持。第三条线是自然增长,等产品上线后通过推荐和分享吸引普通用户。
三条线里,第一条线最容易被低估。团队里有人觉得内部生产是“造假”,是自欺欺人。
朱文佳不这么看。他说:“冷启动阶段的内容不是给用户看的,是给算法看的。算法需要内容来学习,来校准,来建立初始的推荐模型。没有内容,算法就是瞎的。”
内部生产的内容后来被叫做“种子视频”。种子视频的拍摄标准是朱文佳定的:三秒内必须出现音乐,五秒内必须出现画面变化,十秒内必须完成一次情绪起伏。这个标准看起来很机械,但它是从实验数据里推出来的。团队测试了上百条视频,发现完播率最高的那些,都在十秒左右完成了一次情绪闭环。音乐是情绪闭环的触发器。
种子视频的生产过程本身就是一个微缩版的抖音。团队里的人轮流当创作者和观众,拍完之后互相看,看完之后打分。打分维度只有两个:想不想看完,想不想再看一遍。这两个维度后来演化成了抖音推荐算法的两个核心指标:完播率和复播率。但在当时,它们只是团队内部的一个游戏。
拍视频的人为了拿到高分,开始研究什么样的音乐配什么样的画面能让人“想再看一遍”。有人发现,音乐的重拍和画面的切换点对齐的时候,复播率明显更高。有人发现,音乐的情绪转折点和画面的情绪转折点对齐的时候,完播率明显更高。这些发现被一条一条记录下来,变成了早期抖音的“内容密码”。
密码越来越多,但没有人知道哪一条密码是关键的。朱文佳做了一个决定:把所有密码都放进推荐算法的特征池里,让算法自己去学。这个决定后来被证明是对的,但在当时,它意味着团队放弃了“人工定义什么是好内容”的权力。好内容的标准不再由产品经理决定,由算法决定。
这就是“零件时刻”的第一次显形。朱文佳在做出这个决定的时候,清楚地知道自己正在交出什么东西。他交出的是产品经理对“好”的定义权。
以前他“这个视频拍得好,推”,现在他只能说“这个视频的各项特征符合算法模型,推”。前者是人的判断,后者是机器的判断。人的判断有温度,机器的判断有效率。他选择了效率。
他没有把这种交出说成牺牲。他在一次内部会上说:“我们不是在放弃判断,我们是在把判断交给一个更大的系统。这个系统会犯错,但它会自己修正。人做不到这一点。人会固执,会偏见,会疲劳。算法不会。”
这段话在团队内部引起了争议。有人觉得朱文佳在给算法的冷酷找理由。有人觉得他说的是实话。但没有人公开反对。
因为所有人都知道,字节跳动的铁律就是数据说话。你可以在私下里怀疑,但你不能在会议上反对。反对数据,就是反对公司存在的根基。
抖音1.0版本上线前的最后一个深夜,团队做了一次完整的用户测试。测试对象是公司内部的员工,随机抽取了五十个人。
测试结果并不理想。用户平均使用时长不到十分钟,次日留存率低于预期。有人拍了视频但不知道发给谁看,有人看了视频但不知道为什么要看。产品的基本功能都能跑通,但用户的行为路径不清晰。
朱文佳看完测试报告后,在会议室里坐了很久。窗外是北京凌晨的夜色,园区里只剩下零星几盏灯。他想起自己刚加入字节跳动时的情景。那时候今日头条还没有成为国民应用,推荐引擎的每一次迭代都伴随着类似的深夜和类似的怀疑。但那时候的怀疑是具体的,是某个算法参数调错了,是某个内容品类的覆盖不够。
现在的怀疑是抽象的,是“这个产品到底有没有存在的必要”。他站起来,走到白板前,把之前画的那些架构图全部擦掉。然后他写了一个词:音乐。在音乐下面画了一条线。线下面写:节奏。再下面写:情绪。再下面写:表达。四个词排成一列,从上到下,从具体到抽象。他盯着这列词看了很长时间,然后转身对还留在会议室的几个人说:“我们可能把顺序搞反了。不是先有视频再配音乐,是先有音乐再有视频。音乐是起点,视频是结果。”
这个顺序的颠倒,后来被内部称为“抖音的第一性原理”。但在那个深夜,它只是一个疲惫的人在白板上写下的四个词。没有人鼓掌,没有人说“找到了”。大家只是看着那列词,各自想着各自的事情。有人想的是技术实现,有人想的是内容运营,有人想的是版权问题。但所有人都隐约感觉到,那个一直悬在头顶的问号,第一次有了一个可以抓住的把手。
张一鸣在第二天早上看到了这列词。他没有评价,只是问了一个问题:“音乐是起点,那版权怎么办?”这个问题在当时的讨论中被反复提起,但一直没有答案。
版权是音乐路线的死穴。没有版权,曲库就是空的。曲库是空的,音乐路线就是空中楼阁。
朱文佳后来在回忆这段经历时说,版权问题是抖音早期最被低估的困难。团队里没有人有音乐行业的经验,没有人知道怎么跟唱片公司谈授权,没有人知道一首歌的授权费用是多少。他们只有一个模糊的判断:音乐版权必须解决,但解决的方式不一定是买。可能是合作,可能是分成,可能是让音乐人主动上传。
这些可能性在当时都没有被验证,但团队决定先做产品,版权问题边做边解。这个决定后来被证明是抖音崛起的关键之一。如果团队等到版权问题完全解决再上线,抖音可能永远不会上线。
但“边做边解”也意味着产品在早期带着法律风险运行。这种风险后来被资本和规模消化了,但在当时,它是悬在团队头顶的另一把剑。
抖音正式上线的那天,团队没有庆祝。数据后台的曲线平稳得让人不安。新增用户不多,留存率不高,内容供给也谈不上丰富。朱文佳在办公室里看了一天的数据,每隔一小时刷新一次页面。曲线没有惊喜,也没有惊吓。它只是在那里,像一条刚学会呼吸的线,微弱但持续。
傍晚的时候,梁汝波走进办公室,看了一眼屏幕上的数据。他没有评价,只是说了一句:“上线了就好。”然后他转身离开,走到门口又停下来,补了一句:“那个问号还在。”朱文佳点了点头。他知道梁汝波的意思。
产品上线不是终点,甚至不是起点。它只是一个新的“待定”状态。音乐响起了,但没有人知道这首歌会不会有人听。
那天晚上,朱文佳最后一个离开办公室。他关掉显示器,拿起外套,走到电梯口。电梯门打开的时候,他看见张一鸣站在里面。两人点了点头,没有说话。电梯下行,数字从十二跳到十一,跳到十。
张一鸣突然开口:“数据看了?”朱文佳说:“看了。”张一鸣说:“不急。”电梯到了一楼,门打开,张一鸣先走出去,脚步很快,转眼就消失在园区的小路上。
朱文佳站在电梯口,看着张一鸣的背影。他知道“不急”这两个字在字节跳动的语境里意味着什么。意味着这个产品还没有被放弃,但也还没有被证明。它悬在“待定”和“确定”之间,像一根刚被点燃的引线,你不知道它最终会引爆什么,或者会不会在中途熄灭。
他走出办公楼的时候,北京下起了小雨。雨点打在园区的柏油路上,路灯的光晕被拉成一条一条的斜线。他站在雨里,没有撑伞,掏出手机,打开抖音。首页推荐的第一条视频,是一个女孩在路灯下跳舞。音乐是一首节奏明快的流行歌,画面切换的节奏和音乐的重拍几乎完全对齐。他看了两遍。
完播率、复播率,两个指标同时在脑子里闪过。然后他把手机放回口袋,走进雨里。
音乐响起的时刻,没有人知道这首歌的名字。但朱文佳在那个雨夜隐约感觉到,这首歌的节奏是对的。
抖音上线后的第一周,数据依然平淡。日活跃用户数停留在四位数,内容上传量每天只有几百条。推荐引擎的冷启动阶段比预想中更长。团队开始焦虑,有人提出要不要加大推广投入,有人提出要不要调整推荐策略。
朱文佳在周会上没有讨论这些。他让所有人做一件事:每天刷抖音半小时,然后写一段话,描述自己刷到了什么,记住了什么,为什么记住。
一周之后,他把所有人写的话收集起来,一共三十七份。他逐份阅读,发现了一个模式:大多数人记住的视频,都是音乐和画面节奏匹配得好的视频。那些节奏不匹配的视频,即使画面质量更高,也被快速划过了。这个模式在数据上也有对应:节奏匹配度高的视频,完播率是匹配度低的视频的两倍以上。朱文佳把这个发现写成了一页纸的备忘录,标题是《节奏是抖音的第一性原理》。
备忘录的核心只有一句话:推荐引擎的优化目标,应该从“让用户看到更多视频”转向“让用户看到节奏更好的视频”。这个转向在后来被证明是抖音推荐算法最关键的迭代方向之一。但在当时,它只是一个从三十七份主观描述里提炼出来的假设。
张一鸣看到了这份备忘录。他没有回复邮件,而是在当天晚上的产品会上,把备忘录打印出来,放在桌上,问了一句:“节奏怎么量化?”没有人能立刻回答。
节奏是一个感知概念,不是工程概念。你一首歌的节奏快或慢,但你说不出快多少、慢多少。你一个视频的节奏好或坏,但你说不出好在哪里、坏在哪里。
朱文佳后来找到了一个折中方案:用“音乐重拍与画面切换的时间差”作为节奏匹配度的代理指标。这个指标不完美,但它可以被算法计算,可以被A/B测试验证。代理指标被写进了推荐引擎的特征池,成为抖音早期最重要的算法参数之一。
这个参数后来被内部称为“卡点系数”。卡点系数越高,视频被推荐的概率越大。这个规则简单到近乎粗暴,但它有效。
抖音上线第二周,日活跃用户数开始爬升。第三周,爬升加速。第四周,曲线开始变得陡峭。
团队在数据后台看着那条曲线,没有人说话。朱文佳站在人群后面,看着屏幕上的数字跳动。他想起了那个在白板上写下“音乐、节奏、情绪、表达”的深夜。四个词排成一列,从上到下。现在,最上面那个词正在变成一条曲线。曲线爬升的速度超出了所有人的预期。
抖音上线一个月后,日活跃用户数突破六位数。内容上传量每天超过一万条。推荐引擎的冷启动阶段结束了,算法开始进入自我强化的正循环:更多用户带来更多内容,更多内容带来更多数据,更多数据让算法更精准,更精准的算法带来更多用户。
但朱文佳没有庆祝。他在一次内部复盘会上说了一段话,后来被团队称为“卡点系数的诅咒”。他说:“我们现在所有推荐都依赖卡点系数,但卡点系数依赖音乐版权。如果版权出问题,曲库缩水,卡点系数就失效了。如果卡点系数失效,推荐质量就会断崖式下跌。我们现在是在一个非常窄的平衡点上跑,跑得越快,摔得越重。”
这段话在会议上被记录在案,但没有形成任何具体的应对方案。版权谈判还在进行中,进展缓慢。团队能做的只有一件事:在版权问题解决之前,把产品跑得足够快,快到版权方无法忽视。这个策略后来被证明是对的,但在当时,它意味着团队在明知有风险的情况下继续加速。
朱文佳后来在回忆这段经历时说,那是他职业生涯中最分裂的一段时间。白天,他在会议上讲增长、讲数据、讲卡点系数。
晚上,他一个人坐在办公室里,反复看那些被算法判定为“低质量”的视频。那些视频没有卡点,没有音乐,没有特效,只是一个人对着镜头说话,或者一只猫在窗台上发呆。算法不推荐它们,因为它们的完播率低。但朱文佳觉得它们有一种算法理解不了的东西。他说不出那是什么,但他知道那东西存在。
那个东西后来被证明是抖音整个产品哲学里最深的裂缝。算法可以优化节奏,但算法优化不了“人”。一个人对着镜头说话,说的内容可能很重要,但算法听不见内容,算法只听见沉默。
一只猫在窗台上发呆,那个画面可能很治愈,但算法看不见治愈,算法只看见静止。
朱文佳没有能力修补这个裂缝。他只能选择暂时忽略它。因为公司需要增长,增长需要算法,算法需要效率。在效率和温度之间,他选择了效率。这个选择后来被反复讨论、反复质疑、反复辩护,但在那个深夜,它只是一个疲惫的人做出的一个疲惫的决定。
抖音上线后的第二个月,数据曲线继续爬升。团队搬到了更大的办公室,招了更多的人,开了更多的会。会议室的灯管换成了新的,不再嗡鸣。白板上的字迹被擦掉又写上,反复到板面发毛。梁汝波那行红字还在,但已经变得模糊,像一句被时间冲淡的誓言。
朱文佳在一天深夜加班时,走到那面白板前,用手指摸了摸那行红字。墨迹已经干了,摸上去没有感觉。他拿起马克笔,在那行红字下面画了一条线,然后写了一个日期。日期下面又写了一行字:音乐响起了。然后他放下笔,退后两步,看着白板。红字、黑线、日期、新字,从上到下排成一列。像一列火车,载着不同的时间,驶向同一个方向。
他关掉会议室的灯,走出去。走廊里没有人,只有头顶的灯管发出持续的嗡鸣。他走到电梯口,按下按钮。电梯门打开的时候,里面是空的。
他走进去,按下了一楼。电梯下行,数字从十二跳到十一,跳到十。他想起那个晚上,张一鸣站在这个电梯里,说“不急”。现在,数据曲线正在告诉他,也许真的不用急。但他也知道,曲线的陡峭程度已经超出了所有人的控制。
抖音正在变成一个他认不出来的东西。它比他设计的更大,比他预想的更快,比他理解的更复杂。电梯到了一楼,门打开。他走出去,穿过大堂,推开玻璃门。外面是北京凌晨的夜色,园区里只剩下零星几盏灯。
他站在门口,掏出手机,打开抖音。首页推荐的第一条视频,是一个女孩在路灯下跳舞。音乐是一首节奏明快的流行歌,画面切换的节奏和音乐的重拍几乎完全对齐。他看了两遍。然后他把手机放回口袋,走进夜色里。
音乐响起的时刻,没有人知道这首歌的名字。但所有人都能感觉到,节奏正在变快。