我正在将 Microsoft Speech C# API 用于家庭自动化命令
我想知道是否有一种方法或内置的 C# 方法来散列语音输入并识别谁在说话。如果是 Alice 或 Bob 说“Hello Alice”或“Hello Bob”。
编辑:
Microsoft Speech API 可以提供 .wav 的录音。它可能能够散列、处理……以了解谁在说话:
- 响亮的声音,缓慢的调制,... => Bob
- 高音,快速调制,... => Alice
说话人识别是一个难题,仍然是一个活跃的研究领域。我不认为 Microsoft 语音 api 有任何说话人识别支持,但不是 100% 肯定。
在研究该主题时,我发现以下文章确实很有帮助。它介绍了主题,还提供了一个非常粗略的实现。可能是一个很好的起点。
http://www.ibm.com/developerworks/opensource/library/os-sndpeek/index.html
您可以使用 Microsoft Speaker Recognition API 来执行此任务:https ://www.microsoft.com/cognitive-services/en-us/speaker-recognition-api
Microsoft 为此提供了两个 API:说话者验证和说话者识别。
您可以在这里找到他们的 C# 和 Python SDK:https ://github.com/Microsoft/ProjectOxford-ClientSDK/tree/master/SpeakerRecognition
看起来您正在尝试解决说话人分类问题(找出谁在什么时候说话);互联网上有很多工具包可用。我可以推荐一个名为 LIUM 的(在 Java 上运行):http ://www-lium.univ-lemans.fr/diarization/doku.php 。
如果您只是对区分 Alice 和 Bob 感兴趣,您可以查看上面网站脚本页面中的性别检测部分(或直接访问此处http://www-lium.univ-lemans.fr/diarization/doku .php/gender_detection)。
Microsoft Speech 也有 SDK for Speaker Diarization。 https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-use-conversation-transcription
它有 C++/C#/Java 版本,并且有专门的硬件可供购买。