Речь Google в тексте очень эффективна, попробуйте ссылку ниже,
https://cloud.google.com/speech-to-text/
Вы можете выбрать язык (английский США в вашем случае), а также загружать файлы.
Как прокомментировал @bigdataolddriver, точность 100% пока невозможна и будет стоить миллионы.
Google речь к тексту имеет три типа API
Синхронный, Асинхронный и Потоковый, в которых асинхронный позволяет вам ~ 480 минут преобразования звука, в то время как другие позволят вам ~ 1 минуту.Ниже приведен пример кода для выполнения преобразования.
filepath = "~/audio_wav/" #Input audio file path
output_filepath = "~/Transcripts/" #Final transcript path
bucketname = "callsaudiofiles" #Name of the bucket created in the step before
# Import libraries
from pydub import AudioSegment
import io
import os
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
import wave
from google.cloud import storage
Речевой текст поддерживает файлы WAV с кодировкой звука LINEAR16 или MULAW.
Ниже приведен код для получения частоты кадров и канала сcode.
def frame_rate_channel(audio_file_name):
with wave.open(audio_file_name, "rb") as wave_file:
frame_rate = wave_file.getframerate()
channels = wave_file.getnchannels()
return frame_rate,channels
и приведенный ниже код выполняет асинхронное преобразование.
def google_transcribe(audio_file_name):
file_name = filepath + audio_file_name
# The name of the audio file to transcribe
frame_rate, channels = frame_rate_channel(file_name)
if channels > 1:
stereo_to_mono(file_name)
bucket_name = bucketname
source_file_name = filepath + audio_file_name
destination_blob_name = audio_file_name
upload_blob(bucket_name, source_file_name, destination_blob_name)
gcs_uri = 'gs://' + bucketname + '/' + audio_file_name
transcript = ''
client = speech.SpeechClient()
audio = types.RecognitionAudio(uri=gcs_uri)
config = types.RecognitionConfig(
encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=frame_rate,
language_code='en-US')
# Detects speech in the audio file
operation = client.long_running_recognize(config, audio)
response = operation.result(timeout=10000)
for result in response.results:
transcript += result.alternatives[0].transcript
delete_blob(bucket_name, destination_blob_name)
return transcript
, и именно так вы записываете их в файл
def write_transcripts(transcript_filename,transcript):
f= open(output_filepath + transcript_filename,"w+")
f.write(transcript)
f.close()
.дайте мне знать, если вам нужны дальнейшие разъяснения.