Не удаётся распознать голос в текст из .wav файла потоком, используя google speech-to-text

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

import wave
from typing import Tuple
 
from google.cloud import speech
from google.cloud.speech import RecognitionConfig, StreamingRecognitionConfig
 
 
# https://www.slanglabs.in/blog/automatic-speech-recognition-in-python-programs
 
 
def read_wav_file(filename) -> Tuple[bytes, int]:
    with wave.open(filename, 'rb') as w:
        rate = w.getframerate()
        frames = w.getnframes()
        buffer = w.readframes(frames)
    return buffer, rate
 
 
def simulate_stream(buffer: bytes, batch_size: int = 4096):
    buffer_len = len(buffer)
    offset = 0
    while offset < buffer_len:
        end_offset = offset + batch_size
        buf = buffer[offset:end_offset]
        yield buf
        offset = end_offset
 
 
def response_stream_processor(responses):
    transcript = ''
    for response in responses:
        if not response.results:
            continue
        result = response.results[0]
        if not result.alternatives:
            continue
        transcript = result.alternatives[0].transcript
    print(transcript)
    return transcript
 
 
def google_streaming_stt() -> str:
    buffer, rate = read_wav_file("chunk0.wav")
    client = speech.SpeechClient()
    config = RecognitionConfig(
        encoding=RecognitionConfig.AudioEncoding["LINEAR16"],
        sample_rate_hertz=rate,
        language_code="en-US",
        model='video'
    )
 
    streaming_config = StreamingRecognitionConfig(
        config=config,
        interim_results=True
    )
 
    audio_generator = simulate_stream(buffer)  # chunk generator
    requests = (
        speech.StreamingRecognizeRequest(audio_content=chunk) for chunk in audio_generator
    )
 
    responses = client.streaming_recognize(
        config=streaming_config, requests=requests
    )
 
    return response_stream_processor(responses)
 
google_streaming_stt()

Однако, если распознать файл по этой ссылке - все распознает верно. https://cloud.google.com/speech-to-text

Пример чанка - https://sndup.net/5trk


Ответы (0 шт):