我有一个 SiriServerCore 的设置,我正在编程以自动化我的媒体中心的功能。这个媒体中心有电影、电视节目和音乐。基本上,语音转文字会接收到类似于“播放 Asking Alexandria 的最后一集”的内容。在一个包含所有我的音乐文件位置的 Python 列表中,有一个名为“Asking Alexandria-2-The Final Episode(Let's Change Channel).mp3”的文件。我该如何让文本语音与列表中的项目“最佳匹配”?任何帮助都将不胜感激!
假设您的语音输入将被转换为字符串,您可以简单地遍历歌曲列表,查看歌曲标题的前两个或三个单词,将每个标题与输入字符串进行比较,如果歌曲标题的一些或大多数单词出现在代表您的语音的字符串中,您就可以决定正确的歌曲。这会像这样:
>>> a = "Play The Final Episode by Asking Alexandria" # voice input
>>> songList = ["Asking Alexandria - 2 - The Final Episode (Let's Change Channel).mp3", "Angie", "Yesterday.mp3"]
>>> for songTitle in SongsList:
songTitleWords = songTitle.split(" ")
if " ".join(songTitleWords[:2]) in voiceInput:
# play the song
但这只是我的猜测,而不是完美的解决方案。我认为歌曲标题的前几个单词通常最重要。同时,最好从歌曲标题开始,并将歌曲标题与语音输入进行匹配,而不是反过来,因为语音输入可能包含不必要的元素,语音输入的前三个单词可能是“请播放标题为XXX的歌曲”。歌曲标题的前几个单词通常是信息性的。
根据这个问题,你可能想使用这个用于模糊字符串比较的库。它会检查两个字符串之间的相似度;你可以使用它来找到最佳匹配。
Play The Final Episode by Asking Alexandria
和Asking Alexandria - 2 - The Final Episode
之间有很大的Levenshtein距离,但实际上它们是完全匹配的。 - J0HN