Конвертировать большой файл WAV в текст в Python - PullRequest
0 голосов
/ 19 сентября 2019

Я уже пробовал этот код, чтобы преобразовать мой большой wav файл в текст

import speech_recognition as sr
r = sr.Recognizer()

hellow=sr.AudioFile('hello_world.wav')
with hellow as source:
    audio = r.record(source)
try:
    s = r.recognize_google(audio)
    print("Text: "+s)
except Exception as e:
    print("Exception: "+str(e))

Но он не конвертируется точно, потому что я чувствую, что это американский акцент.Пожалуйста, скажите мне, как я могу конвертировать весь большой wav файл точно.

1 Ответ

0 голосов
/ 19 сентября 2019

Речь 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()

.дайте мне знать, если вам нужны дальнейшие разъяснения.

...