【问题标题】:Python: How to get raw audio file using pyaudio for Google Cloud Speech APIPython:如何使用 pyaudio for Google Cloud Speech API 获取原始音频文件
【发布时间】:2017-01-08 13:09:20
【问题描述】:

我在 linux 上使用下面链接中给出的程序。

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/quickstart.py

我面临的问题是如何使用 pyaudio 获取我自己的麦克风录制的原始音频文件,以使用上述程序获取我录制的文本。

我有以下 pyaudio 程序,但它给了我 wav 文件。但我想为谷歌云语音 api 保存原始音频文件。我不想将 wav 转换为原始音频文件。我直接想使用 pyaudio 保存原始音频文件。

import pyaudio
import wave

FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "file.wav"

audio = pyaudio.PyAudio()

# start Recording
 stream = audio.open(format=FORMAT, channels=CHANNELS,
            rate=RATE, input=True,
            frames_per_buffer=CHUNK)
 print "recording..."
 frames = []

 for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
 data = stream.read(CHUNK)
 frames.append(data) 
 print "finished recording"


 # stop Recording
 stream.stop_stream()
 stream.close()
 audio.terminate()

 waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
 waveFile.setnchannels(CHANNELS)
 waveFile.setsampwidth(audio.get_sample_size(FORMAT))
 waveFile.setframerate(RATE)
 waveFile.writeframes(b''.join(frames))
 waveFile.close()

【问题讨论】:

    标签: python google-cloud-speech


    【解决方案1】:

    我找到了答案。很抱歉发布这个问题。我是编程新手..

    import pyaudio
    import wave
    
    FORMAT = pyaudio.paInt16
    
    CHANNELS = 1
    RATE = 16000
    CHUNK = int(RATE / 10)
    RECORD_SECONDS = 5
    
    audio = pyaudio.PyAudio()
    
    # start Recording
    stream = audio.open(format=FORMAT, channels=CHANNELS,
                rate=RATE, input=True,
                frames_per_buffer=CHUNK)
    print "recording..."
    frames = []
    
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)
    print "finished recording"
    
    
    # stop Recording
    stream.stop_stream()
    stream.close()
    audio.terminate()
    
    
    
    file = open("newfile.raw", "w")
    file.write(b''.join(frames))
    file.close()
    

    【讨论】:

    • 不要为提问找借口,这就是我们学习的方式。此外,我们非常欢迎您回答自己的问题。但是,请在您的答案中解释您的解决方案,而不是仅仅发布有效的代码。感谢您帮助社区!
    • @Rightleg 感谢您的宝贵建议。我将在下一次的回答中解释代码。但这里的问题是我也没有理解代码。无论如何祝你好运!。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多