碧昂丝的新专辑《Cowboy Carter》是对人工智能音乐的反对声明

碧昂丝的《牛仔卡特》才发行几天,但很明显我们将在未来几年里谈论它——它打破了流媒体平台的记录,艺术家本人称其为“最好的音乐[她是 ] 做过。” 但在《牛仔卡特》的新闻稿中,碧昂斯出人意料地发表了反对人工智能在音乐中日益增长的声明。

“创作音乐的乐趣在于没有规则,”碧昂丝说。 “我看到世界不断发展的越多,我就越能感受到与纯洁的更深层次的联系。 有了人工智能、数字滤波器和编程,我想回到真正的仪器上。”

碧昂丝很少接受采访,这让她对新专辑的每一条评论都变得更加重要——这些评论是歌迷们为数不多的起点,可以帮助他们理解专辑的每个元素,以及它们如何组合在一起。 因此,她对人工智能的立场不仅仅是在与记者交谈时随意发表的评论。 这是故意的。

对人工智能生成艺术的主要反对来自于该技术的工作方式。 人工智能驱动的音乐生成器可以在几分钟内创建新曲目,并以令人难以置信的程度模仿艺术家的声音。 在某些情况下,这是因为人工智能正在接受艺术家作品的训练,而这些艺术家的工作最终可能会被人工智能取代。

大型语言模型和传播模型都需要庞大的文本、图像和声音数据库才能创建人工智能生成的作品。 一些最著名的人工智能公司,如 Open AI 和 Stability AI,未经同意就使用包含受版权保护的艺术品的数据集。 尽管 Stability AI 的音乐模型是根据许可的库存音乐进行训练的,但该公司的图像生成器 Stable Diffusion 却并非如此。 Stability AI 的音频副总裁 Ed Newton-Rex 就此辞职,因为他“不同意该公司的观点,即在受版权保护的作品上训练生成人工智能模型是‘合理使用’。”

难怪像碧昂斯这样的艺术家对这项技术有着强烈的感情——太多的人工智能模型在未经艺术家同意的情况下接受了艺术家作品的训练,尤其是对于那些没有影响力来支持他们的新兴音乐家来说,要训练他们的人工智能模型就更难了。 闯入一个本来就残酷的行业。 碧昂斯的立场在“牛仔卡特”本身的背景下更有意义。

尽管没有明确讨论人工智能,但《牛仔卡特》已经解决了未经同意盗窃和挪用艺术品的问题。 在专辑本身中,碧昂丝正在给听众上一堂历史课,讲述黑人音乐家如何奠定乡村音乐的基础,而乡村音乐通常被认为代表了南方白人文化。

甚至标题“牛仔卡特”也是对黑人音乐为白人谋取利益的认可。 虽然“卡特”可能指的是碧昂斯的婚后名字,但这也是对乡村音乐“第一家庭”卡特家族的致敬——卡特家族借鉴了黑人音乐家的作品,发展了我们现在所知的乡村风格,这种风格继续排除 黑人艺术家(就在最近,俄克拉荷马州的一家乡村广播电台拒绝了听众播放碧昂丝的“Texas Hold 'Em”的请求,因为碧昂丝不符合他们对乡村艺术家的定义)。 碧昂斯对人工智能看似随意的立场揭示了一个类似的事实:艺术家的作品再一次在未经他们同意的情况下被盗,并被扭曲成其他东西,使他们无法获得报酬或因其文化贡献而获得荣誉。

专辑中有几个时刻是 90 岁的乡村偶像威利·尼尔森 (Willie Nelson) 出现在一个名为“Smoke Hour”的广播节目中,并且首次出现在“Texas Hold ‘Em”之前。 鉴于俄克拉荷马广播电台事件,这首歌的位置有了额外的一层意义,尼尔森轻轻一击:“现在,对于下一首曲子,我希望你们都坐下来,吸气,然后走向好的一面。” 你的思绪喜欢飘向的地方。 如果你不想去,就去找个自动点唱机吧。”

这就是碧昂丝的世界:自动点唱机和收音机重新流行,黑人音乐家可以创作他们想要的任何类型的音乐,没有人的艺术品被盗。

好的,下面是一段简单的Java代码,用于实现基于内容的推荐算法,推荐音乐家: ```java import java.util.*; public class ContentBasedRecommender { // 音乐家的特征数据 private Map<String, Map<String, Double>> musicianData; public ContentBasedRecommender(Map<String, Map<String, Double>> musicianData) { this.musicianData = musicianData; } // 计算两个音乐家之间的余弦相似度 private double cosineSimilarity(Map<String, Double> v1, Map<String, Double> v2) { double dotProduct = 0.0; double norm1 = 0.0; double norm2 = 0.0; for (String key : v1.keySet()) { if (v2.containsKey(key)) { dotProduct += v1.get(key) * v2.get(key); } norm1 += v1.get(key) * v1.get(key); } for (String key : v2.keySet()) { norm2 += v2.get(key) * v2.get(key); } if (norm1 == 0.0 || norm2 == 0.0) { return 0.0; } else { return dotProduct / (Math.sqrt(norm1) * Math.sqrt(norm2)); } } // 计算每个音乐家的推荐分数 public List<Recommendation> getRecommendations(Map<String, Double> userLikes) { Map<String, Double> scores = new HashMap<>(); Map<String, Double> totalSim = new HashMap<>(); for (String musician : musicianData.keySet()) { double score = 0.0; double simSum = 0.0; for (String like : userLikes.keySet()) { if (musicianData.get(musician).containsKey(like)) { double sim = cosineSimilarity(musicianData.get(musician), musicianData.get(like)); score += sim * userLikes.get(like); simSum += sim; } } if (simSum > 0.0) { scores.put(musician, score); totalSim.put(musician, simSum); } } List<Recommendation> recommendations = new ArrayList<>(); for (String musician : scores.keySet()) { double score = scores.get(musician); double simSum = totalSim.get(musician); double normScore = score / simSum; recommendations.add(new Recommendation(musician, normScore)); } Collections.sort(recommendations); return recommendations; } public static void main(String[] args) { // 初始化音乐家的特征数据 Map<String, Map<String, Double>> musicianData = new HashMap<>(); Map<String, Double> taylorSwift = new HashMap<>(); taylorSwift.put("Pop", 1.0); taylorSwift.put("Country", 0.5); taylorSwift.put("Folk", 0.2); musicianData.put("Taylor Swift", taylorSwift); Map<String, Double> beyonce = new HashMap<>(); beyonce.put("R&B", 1.0); beyonce.put("Pop", 0.8); beyonce.put("Hip Hop", 0.5); musicianData.put("Beyonce", beyonce); Map<String, Double> justinBieber = new HashMap<>(); justinBieber.put("Pop", 1.0); justinBieber.put("Dance", 0.8); justinBieber.put("R&B", 0.5); musicianData.put("Justin Bieber", justinBieber); // 初始化用户的历史喜好 Map<String, Double> userLikes = new HashMap<>(); userLikes.put("Pop", 1.0); userLikes.put("Country", 0.8); // 创建基于内容的推荐算法对象 ContentBasedRecommender recommender = new ContentBasedRecommender(musicianData); // 获得推荐结果 List<Recommendation> recommendations = recommender.getRecommendations(userLikes); // 输出推荐结果 for (Recommendation recommendation : recommendations) { System.out.println(recommendation.getMusician() + " - " + recommendation.getScore()); } } } class Recommendation implements Comparable<Recommendation> { private String musician; private double score; public Recommendation(String musician, double score) { this.musician = musician; this.score = score; } public String getMusician() { return musician; } public double getScore() { return score; } @Override public int compareTo(Recommendation other) { return Double.compare(other.score, score); } } ``` 这段代码实现了基于内容的推荐算法,推荐音乐家。其中,`ContentBasedRecommender`类表示推荐算法,`Recommendation`类表示推荐结果。在`main`方法中,初始化了音乐家的特征数据和用户的历史喜好,使用`ContentBasedRecommender`类获得推荐结果,并输出推荐结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值