我有一个SiriServerCore设置,我正在编程以基本上自动化我的媒体中心的功能。这个媒体中心有电影,电视节目和音乐。从本质上讲,文本语音将会收到类似“播放Asking Alexandria的最后一集”的内容。在包含我所有音乐文件位置的python列表中,有一个名为“Asking Alexandria - 2 - The Last Episode(Let's Change Channel).mp3”的文件。我如何才能使文本语句与列表中的项目“最匹配”?任何帮助表示赞赏!
答案 0 :(得分:2)
假设您的语音输入将转换为字符串,您可以简单地遍历歌曲列表,查看歌曲标题的前两个或三个单词,将每个标题与输入字符串进行比较,以及是否有一些或大多数单词。歌曲标题出现在代表你声音的字符串中,你可以对正确的歌曲作出决定。这就像是:
>>> 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
但这更像是一种预感,而不是一种完美的解决方案。我认为歌曲标题的第一句话通常是最重要的。同时最好从歌曲标题开始,将歌曲标题与歌曲输入匹配,而不是相反,因为语音输入可能包含不必要的元素,语音输入的前三个单词可能类似于"请播放我是一首标题之歌"。歌曲标题的第一句话通常是提供信息的。
答案 1 :(得分:1)
根据this question,您可能希望使用此library for fuzzy string comparisons。它检查两个字符串之间的相似性;你可以用它来找到最佳匹配。