Mp3 到 Wav。转换为 Python
Mp3 to Wav. convert in Python
我目前正在做一个项目,我请求 phone 调用 (Mp3) 并且必须通过 python 脚本制作自动转录。
我正在使用 Azure Speech to text services 并且一切正常,但该服务仅支持 Wav。文件,我仍然停留在那个部分。
import azure.cognitiveservices.speech as speechsdk
import time
from os import path
from pydub import AudioSegment
import requests
import hashlib
OID = ***
string = f"***"
encoded = string.encode()
result = hashlib.sha256(encoded)
resultHash = (result.hexdigest())
r = requests.get(f"***", headers={f"***":f"{***}"})
Telefoongesprek = r
# converts audio file (mp3 to Wav.)
#src = Telefoongesprek
#dst = "Telefoongesprek #****.wav"
#sound = AudioSegment.from_mp3(src)
#sound.export(dst, format="wav")
def speech_recognize_continuous_from_file():
speech_config = speechsdk.SpeechConfig(subscription="***", region="***")
speech_config.speech_recognition_language = "nl-NL"
audio_config = speechsdk.audio.AudioConfig(filename="Telefoongesprek #****.wav")
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
done = False
def stop_cb(evt):
print('CLOSING on {}'.format(evt))
nonlocal done
done = True
all_results = []
def handle_final_result(evt):
all_results.append(evt.result.text)
#speech_recognizer.recognizing.connect(handle_final_result)
speech_recognizer.recognized.connect(handle_final_result)
speech_recognizer.session_started.connect(handle_final_result)
speech_recognizer.session_stopped.connect(handle_final_result)
speech_recognizer.canceled.connect(handle_final_result)
speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)
speech_recognizer.start_continuous_recognition()
while not done:
time.sleep(.5)
speech_recognizer.stop_continuous_recognition()
print(all_results)
speech_recognize_continuous_from_file()
这就是我在没有所有密钥和加密的情况下使用的代码,除了从 MP3 到 Wav 的转换之外,一切都有效。
有什么办法可以将请求的文件保存在此脚本中,并将其传递给:
audio_config = speechsdk.audio.AudioConfig(filename="Telefoongesprek #****.wav")。还是我必须将它保存到电脑上并以另一种方式进行。
我已经在这个问题上停留了一个多星期,并尝试了许多不同的方法。
提前致谢!
博范德梅尔
您应该能够将响应数据(您可以使用 r.content
访问原始字节)保存到本地的 .mp3 文件,然后将该文件路径传递给 pydub。
with open('path/to/local/file.mp3', 'wb') as f:
f.write(r.content)
另一种选择是使用标准库中的模块io.BytesIO
。
如果您将原始字节传递给它,例如 import io; f = io.BytesIO(r.content)
,它会给您一个行为类似于打开文件句柄的对象,您可以将其传递给接受文件的函数。我没有检查您尝试使用的 pydub 方法是否接受文件句柄或仅接受路径,因此您必须先检查一下。
我目前正在做一个项目,我请求 phone 调用 (Mp3) 并且必须通过 python 脚本制作自动转录。 我正在使用 Azure Speech to text services 并且一切正常,但该服务仅支持 Wav。文件,我仍然停留在那个部分。
import azure.cognitiveservices.speech as speechsdk
import time
from os import path
from pydub import AudioSegment
import requests
import hashlib
OID = ***
string = f"***"
encoded = string.encode()
result = hashlib.sha256(encoded)
resultHash = (result.hexdigest())
r = requests.get(f"***", headers={f"***":f"{***}"})
Telefoongesprek = r
# converts audio file (mp3 to Wav.)
#src = Telefoongesprek
#dst = "Telefoongesprek #****.wav"
#sound = AudioSegment.from_mp3(src)
#sound.export(dst, format="wav")
def speech_recognize_continuous_from_file():
speech_config = speechsdk.SpeechConfig(subscription="***", region="***")
speech_config.speech_recognition_language = "nl-NL"
audio_config = speechsdk.audio.AudioConfig(filename="Telefoongesprek #****.wav")
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
done = False
def stop_cb(evt):
print('CLOSING on {}'.format(evt))
nonlocal done
done = True
all_results = []
def handle_final_result(evt):
all_results.append(evt.result.text)
#speech_recognizer.recognizing.connect(handle_final_result)
speech_recognizer.recognized.connect(handle_final_result)
speech_recognizer.session_started.connect(handle_final_result)
speech_recognizer.session_stopped.connect(handle_final_result)
speech_recognizer.canceled.connect(handle_final_result)
speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)
speech_recognizer.start_continuous_recognition()
while not done:
time.sleep(.5)
speech_recognizer.stop_continuous_recognition()
print(all_results)
speech_recognize_continuous_from_file()
这就是我在没有所有密钥和加密的情况下使用的代码,除了从 MP3 到 Wav 的转换之外,一切都有效。 有什么办法可以将请求的文件保存在此脚本中,并将其传递给: audio_config = speechsdk.audio.AudioConfig(filename="Telefoongesprek #****.wav")。还是我必须将它保存到电脑上并以另一种方式进行。 我已经在这个问题上停留了一个多星期,并尝试了许多不同的方法。 提前致谢!
博范德梅尔
您应该能够将响应数据(您可以使用 r.content
访问原始字节)保存到本地的 .mp3 文件,然后将该文件路径传递给 pydub。
with open('path/to/local/file.mp3', 'wb') as f:
f.write(r.content)
另一种选择是使用标准库中的模块io.BytesIO
。
如果您将原始字节传递给它,例如 import io; f = io.BytesIO(r.content)
,它会给您一个行为类似于打开文件句柄的对象,您可以将其传递给接受文件的函数。我没有检查您尝试使用的 pydub 方法是否接受文件句柄或仅接受路径,因此您必须先检查一下。