65.9K
CodeProject 正在变化。 阅读更多。
Home

什么曲调?- 混合三个 Web 服务

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.79/5 (8投票s)

2007年2月5日

CPOL

5分钟阅读

viewsIcon

31105

downloadIcon

616

《歌曲是什么?》是一个轻松愉快的项目,它整合了三个 C# Web 服务。这个概念验证程序可以录制麦克风的音频,将其保存到 Amazon S3,创建一个任务让工作人员使用 Amazon Mechanical Turk 来识别歌曲,然后轮询 Amazon ECS 以获取相关专辑信息。

[在尝试示例应用程序之前,请参阅文章底部的“运行示例”部分中的说明。]

本文档提供了一些关于“歌曲是什么?”应用程序如何工作的通用信息。

关于示例

想象一下,有一天一首歌在你脑海里挥之不去,但你却想不起它的名字。也许你只能哼出旋律,或者你不确定歌词是否正确(“浴室歌唱”现象),因此在网上搜索歌词却一无所获。这个示例应用程序展示了如何使用 Amazon Web Services 和 C# 的 Windows Forms 来解决这个问题。

该示例使用了 Amazon Web Services 的三个 Web 服务

  • Amazon Simple Storage Service (Amazon S3)
  • Amazon Mechanical Turk Web 服务
  • Amazon E-Commerce Service (Amazon ECS)

Amazon S3

Amazon S3 提供了一个简单的 Web 服务接口,可以随时随地通过 Web 存储和检索任意数量的数据。它使任何开发者都能使用与 Amazon 运行其全球网络网站相同的、高扩展性、高可靠性、高速度、低成本的数据存储基础设施。

Amazon Mechanical Turk Web 服务

Amazon Mechanical Turk 提供了一个 Web 服务 API,使计算机能够通过向人类发出请求来直接将人类智能集成到其处理过程中。开发者使用 Amazon Mechanical Turk Web 服务将任务提交到 Amazon Mechanical Turk 网站,批准已完成的任务,并将答案整合到他们的软件应用程序中。对于应用程序而言,该交易看起来非常像任何远程过程调用——应用程序发送请求,服务返回结果。实际上,一个由人类组成的网络通过访问网站、搜索和完成任务并获得报酬来驱动这种“人工人工智能”。

Amazon ECS

Amazon E-Commerce Service (ECS) 暴露了 Amazon 的产品数据和电子商务功能。这使得开发者、网站所有者和商家能够利用 Amazon 用来驱动其自身电子商务业务的数据和功能。

应用程序生命周期

下面是一张图,展示了基本的应用程序生命周期

让我们更详细地了解每个步骤。

步骤 摘要 描述
1 录制音频 该示例使用默认的音频输入设备(通常是麦克风)录制音频。为了简化示例,录音机实现了 mciSendString 接口到操作系统。这种通用的、粗略的录音方法限制了在质量、大小和格式方面的选择。其他录制音频的方法包括 Windows Media Encoder 和 DirectX 的 DirectSound 部分。
2 创建“识别歌曲”任务

要创建“识别歌曲”任务,该示例首先将音频文件上传到 Amazon S3。接下来,它使用 Amazon Mechanical Turk 创建一个 Human Intelligence Task (HIT),该任务定义了我们要完成的工作。在这种情况下,我们要求提供三条信息:

  1. Artist
  2. 歌曲标题
  3. 补充说明

该示例不采用任何技术来保证 Amazon Mechanical Turk 工作人员的工作质量。帮助确保工作质量的其他技术包括对同一工作使用多个任务,以及使用第二个 HIT 来验证第一个 HIT 的结果。

3 工作人员在 mturk.com 上完成任务

几乎任何人都可以通过 Amazon Mechanical Turk 网站完成任务。唯一的要求是拥有一台连接到 Internet 的计算机,并且年满 18 岁。

通过 Amazon Mechanical Turk 网站赚钱就像在该网站上搜索 HITs、预订这些 HITs、完成它们,并在 Requet 批准后收款一样简单。

目前市场上的一些任务对 Amazon 的搜索子公司 A9.com 有益。Amazon Mechanical Turk 被用来提高 A9 的 BlockView 图片的质量,这些图片向用户展示了商家的街道级别照片。这些 HITs 要求人们从几张照片中选择最能代表商家正面照片的那一张。

4 从 Amazon Mechanical Turk 收集结果 该示例使用一个计时器,允许应用程序轮询 Amazon Mechanical Turk Web 服务直到工作完成。完成工作所需的时间各不相同,因此有一个可选的复选框允许您手动轮询结果。
5 使用 Amazon ECS 查找专辑 Amazon ECS 目前不允许直接搜索歌曲标题,因此该示例使用 Amazon ECS 按艺术家搜索相关专辑,然后使用 Tracks 响应组返回的结果在结果中搜索歌曲标题。
6 显示结果 最后,在应用程序中显示来自 Amazon Mechanical Turk 和 Amazon ECS 的结果。

应用程序生命周期的某些步骤最好在后台处理,因此用户只需经历三个精简的步骤:

  1. 演唱歌曲
  2. 审核和上传
  3. 歌曲结果

运行示例

该示例为每个 Web 服务使用了以下 SOAP API 版本:

  • Amazon Mechanical Turk Web 服务:2006-06-20
  • Amazon S3:2006-03-01
  • Amazon ECS:2006-10-31

在运行示例之前,请确保已满足以下先决条件:

现在,这里是运行应用程序的步骤:
  1. 下载并解压 .zip 文件内容。
  2. 在 Visual Studio 中打开 WhatsThatTune.sln。
  3. 更新代码以使用您的访问标识符
    1. 打开 Settings.settings。
    2. 更新 m_awsAccessKeyId 和 m_awsSecretAccessKey 属性。
  4. 使用 Visual Studio 编译并运行示例。
  5. 使用示例应用程序录制音频、创建任务并返回歌曲结果。

最后,您得到的结果应该与我们通过演唱 Weezer 的“Beverly Hills”所运行的这个示例类似。

额外资源

这里有一些通用链接,您可以用来了解本文档中涉及的技术:

© . All rights reserved.