直接从 SFTP 服务器(使用 Paramiko SFTPClient)将音频文件加载到 Python 的语音识别模块
Loading audio file to Speech recognition module for Python directly from SFTP server (using Paramiko SFTPClient)
我想先说明一下,我仍然是 Paramiko 的菜鸟,所以这可能是完全不可能的。
我想从我的计算机打开服务器上的 .wav
文件,以便对其进行一些语音识别。为此,我使用 Paramiko 创建了一个 Transport,并用它来打开服务器上的音频文件。然后我将此文件设置为我的来源并使用 SpeechRecognition 打印音频文件中所说的任何内容。但是,当我打开位于 remotefilepath
的文件时,它不再被识别为音频文件,因为我收到错误消息 AssertionError: Source must be an audio source
。打印 type(file)
我得到 <class 'paramiko.sftp_file.SFTPFile'>
.
我只想打开服务器上的文件并对其进行语音识别,而不必先将文件保存到我自己的计算机上。我有什么办法可以做到这一点吗?非常感谢任何 help/advice
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"
Python 2.7 Windows 10。
尝试将文件从源复制到本地并开始处理它。
sftp.get(filepath, localpath)
adjust_for_ambient_noise
takes an implementation of AudioSource
作为参数。您正在传递类似文件的对象。
我相信您可以使用 AudioSource
的 AudioFile
实现。 AudioFile
可以用类文件对象创建:
with sftp.open(remotefilepath) as file:
with AudioFile(file) as source:
r.adjust_for_ambient_noise(source)
我想先说明一下,我仍然是 Paramiko 的菜鸟,所以这可能是完全不可能的。
我想从我的计算机打开服务器上的 .wav
文件,以便对其进行一些语音识别。为此,我使用 Paramiko 创建了一个 Transport,并用它来打开服务器上的音频文件。然后我将此文件设置为我的来源并使用 SpeechRecognition 打印音频文件中所说的任何内容。但是,当我打开位于 remotefilepath
的文件时,它不再被识别为音频文件,因为我收到错误消息 AssertionError: Source must be an audio source
。打印 type(file)
我得到 <class 'paramiko.sftp_file.SFTPFile'>
.
我只想打开服务器上的文件并对其进行语音识别,而不必先将文件保存到我自己的计算机上。我有什么办法可以做到这一点吗?非常感谢任何 help/advice
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"
Python 2.7 Windows 10。
尝试将文件从源复制到本地并开始处理它。
sftp.get(filepath, localpath)
adjust_for_ambient_noise
takes an implementation of AudioSource
作为参数。您正在传递类似文件的对象。
我相信您可以使用 AudioSource
的 AudioFile
实现。 AudioFile
可以用类文件对象创建:
with sftp.open(remotefilepath) as file:
with AudioFile(file) as source:
r.adjust_for_ambient_noise(source)