我想以我仍然是Paramiko的傻瓜这个事实作为开头,因此这可能完全是不可能的。
我想从计算机上打开服务器上的.wav
文件,以便对其进行语音识别。为此,我使用Paramiko创建了一个Transport,并使用它在服务器上打开音频文件。然后,我将此文件设置为源,并使用SpeechRecognition打印音频文件中所说的内容。但是,当我打开位于remotefilepath
中的文件时,由于收到错误消息AssertionError: Source must be an audio source
,因此不再将其识别为音频文件。打印type(file)
我得到<class 'paramiko.sftp_file.SFTPFile'>
。
我只想打开服务器上的文件并对其进行语音识别,而不必先将文件保存到我自己的计算机上。有什么办法可以做到吗?任何帮助/建议都非常感谢
import paramiko
import speech_recognition as sr
remotefilepath = /path/to/file.wav
server_ip = 12.34.567.8
server_port = 22
transport = paramiko.Transport((server_ip, server_port))
transport.connect(username="foo", password="bar")
print "Connected to transport"
sftp = transport.open_sftp_client()
file = sftp.open(remotefilepath)
#print type(file)
r = sr.Recognizer()
with file as source:
r.adjust_for_ambient_noise(source)
audio = r.record(source)
try:
text = r.recognize_google(audio)
print "You said: {}".format(text)
except:
print "Sorry, I could not understand."
file.close()
sftp.close()
transport.close()
print "Closed transport. Ending program"
Windows 10上的Python 2.7
答案 0 :(得分:1)
adjust_for_ambient_noise
以AudioSource
的实现作为参数。您正在传递类似文件的对象。
我相信您可以改用AudioSource
的{{3}}实现。可以使用类似文件的对象创建AudioFile
:
with sftp.open(remotefilepath) as file:
with AudioFile(file) as source:
r.adjust_for_ambient_noise(source)
答案 1 :(得分:0)
尝试将文件从源复制到本地,然后开始处理它。
sftp.get(filepath, localpath)