2020-02-18 python+IBM Cloud进行语音转文字,speech-to-text

快速演示页面,可以在此页面中上传音频并测试:https://speech-to-text-demo后面还有一大串

通过此页面的该按钮来创建应用:


image.png

没有注册IBM Cloud的小伙伴需要先注册账号,然后才能创建资源。
注册账号的时候遇到点小问题,使用163邮箱无法注册,使用qq邮箱可以注册成功。
登录后,点击“创建资源”,资源名为“Speech to Text”。
免费版本,每月可以使用500分钟


image.png

取得服务的使用凭证:
image.png

安装必要模块:

pip install ibm-watson

python代码:

# -*- coding: GBK -*-
import json
from os.path import join, dirname
from ibm_watson import SpeechToTextV1
from ibm_watson.websocket import RecognizeCallback, AudioSource
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

API_KEY = '我是api_key'
API_URL = '我是url'

authenticator = IAMAuthenticator(API_KEY)
speech_to_text = SpeechToTextV1(
    authenticator=authenticator
)

speech_to_text.set_service_url(API_URL)

class MyRecognizeCallback(RecognizeCallback):
    def __init__(self):
        RecognizeCallback.__init__(self)

    def on_data(self, data):
        print(json.dumps(data, indent=2))

    def on_error(self, error):
        print('Error received: {}'.format(error))

    def on_inactivity_timeout(self, error):
        print('Inactivity timeout: {}'.format(error))

myRecognizeCallback = MyRecognizeCallback()

with open(join(dirname(__file__), './.', 'audio-file.flac'),
              'rb') as audio_file:
    audio_source = AudioSource(audio_file)
    speech_to_text.recognize_using_websocket(
        # 提供要转录的音频的AudioSource对象。必需
        audio=audio_source,
        # 文件类型。必需
        content_type='audio/flac',
        # 接口返回的数据通过该回调对象的on_data方法进行处理。必需
        recognize_callback=myRecognizeCallback,
        # 应用的语言模型,默认为en-US_BroadbandModel。中文相关:zh-CN_BroadbandModel, zh-CN_NarrowbandModel
        # model='en-US_BroadbandModel',
        # 根据阈值来查找关键词
        # keywords=['colorado', 'tornado', 'tornadoes'],
        # keywords_threshold=0.5,
        #返回3个阈值最高的结果
        # max_alternatives=3
        )

'''
与上面代码等效的curl:
curl -X POST -u "apikey:我是api_key" ^
--header "Content-Type: audio/flac" ^
--data-binary @C:\Users\wuxd\Desktop\audio-file.flac ^
"我是url/v1/recognize"
'''

代码、详细信息、参数说明都在这里。点、点、点我

关于音频格式:mp3、wav用上面代码进行转换时需要修改文件类型为audio/mp3、audio/wav。
音频格式详细说明

音频文件的大小:

使用 WebSocket 和同步 HTTP 接口时,通过单个请求最多可以传递 100 MB 音频数据。使用异步 HTTP 接口时,最多可以传递 1 GB 音频数据。在任何请求中,都必须发送至少 100 字节的音频。

如果要识别的音频量很大,那么可以手动将音频划分成较小的区块。但是,将音频转换为压缩的有损格式通常更高效、更方便。压缩可以最大限度提高可通过单个请求发送的数据量。尤其是音频为 WAV 或 FLAC 格式时,将其转换为有损格式会产生显著的效果。

你可能感兴趣的:(2020-02-18 python+IBM Cloud进行语音转文字,speech-to-text)