文档

语音识别实现音视频文件转写及实时文字上屏功能

更新时间:

本文以Paraformer语音识别为例,介绍通过DashScope的语音识别文件转写模型(paraformer-v1)进行视频文件语音转写的基本使用方法,并在进阶指南部分展示了如何使用实时语音识别模型(paraformer-realtime-v1)进行实时语音转文字上屏的功能。

前提条件

从最简单的指令开始

语音识别可以将音视频文件中的语音内容转换为文字。小明在网上看到一个将近30分钟的视频,他希望通过语音识别进行处理,从而获取视频中的文字内容。于是他想到了使用语音识别模型来完成这个任务。

小明了解到,语音识别模型的文件转写API能够通过指定音视频文件的URL来进行语音转文字。他首先复现了Paraformer语音识别模型快速开始文档中的示例代码,来打磨他的程序。

说明

需要使用您的api-key替换示例中的 <your-dashscope-api-key>,代码才能正常运行。

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html

import dashscope
from urllib import request
import json

dashscope.api_key='your-dashscope-api-key'

task_response=dashscope.audio.asr.Transcription.async_call(
    model='paraformer-v1',
    file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav']
    )

transcription_response=dashscope.audio.asr.Transcription.wait(task=task_response.output['task_id'])

transcription_url = transcription_response.output['results'][0]['transcription_url']
transcription_results = json.loads(request.urlopen(transcription_url).read().decode('utf8'))
print(json.dumps(transcription_results, indent=4, ensure_ascii=False))
package com.alibaba.dashscope.sample.transcription;

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.*;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.*;
import java.net.HttpURLConnection;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
      	// 创建转写请求参数,需要用真实apikey替换your-dashscope-api-key
        TranscriptionParam param =
                TranscriptionParam.builder()
                        .apiKey("your-dashscope-api-key")
                        .model("paraformer-v1")
                        .fileUrls(
                                Collections.singletonList(
                                        "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"))
                        .build();
        try {
            Transcription transcription = new Transcription();
          	// 提交转写请求
            TranscriptionResult result = transcription.asyncCall(param);
            // 等待转写完成
          	result = transcription.wait(
                            TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            // 获取转写结果
          	List<TranscriptionTaskResult> taskResultList = result.getResults();
            if (taskResultList != null && taskResultList.size() > 0) {
                TranscriptionTaskResult taskResult = taskResultList.get(0);
                // 获取转写结果的url
              	String transcriptionUrl = taskResult.getTranscriptionUrl();
                // 通过Http获取url内对应的结果
              	HttpURLConnection connection = (HttpURLConnection) new URL(transcriptionUrl).openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                // 格式化输出json结果
              	Gson gson = new GsonBuilder().setPrettyPrinting().create();
                System.out.println(gson.toJson(gson.fromJson(reader, JsonObject.class)));
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

等待数秒钟后,获得了API返回的结果。

{
	"file_url": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
	"properties": {
		"channels": [],
		"original_sampling_rate": 16000,
		"original_duration_in_milliseconds": 3834
	},
	"transcripts": [{
		"channel_id": 0,
		"content_duration_in_milliseconds": 2816,
		"text": "Hello, world, 这里是阿里巴巴语音实验室。",
		"sentences": [{
			"begin_time": 560,
			"end_time": 3376,
			"sentence_id": 0,
			"text": "Hello, world, 这里是阿里巴巴语音实验室。",
			"words": [{
					"begin_time": 560,
					"end_time": 880,
					"text": "Hello",
					"punctuation": ", "
				},
				{
					"begin_time": 880,
					"end_time": 1180,
					"text": "world",
					"punctuation": ", "
				},
				{
					"begin_time": 1180,
					"end_time": 1729,
					"text": "这里是",
					"punctuation": ""
				},
				{
					"begin_time": 1729,
					"end_time": 2461,
					"text": "阿里巴巴",
					"punctuation": ""
				},
				{
					"begin_time": 2461,
					"end_time": 2827,
					"text": "语音",
					"punctuation": ""
				},
				{
					"begin_time": 2827,
					"end_time": 3376,
					"text": "实验室",
					"punctuation": "。"
				}
			]
		}]
	}]
}

在屏幕上显示语音识别内容

上面的示例代码给出了非常详细的信息,但小明只希望看到一段一段的语音识别文字。于是小明修改了代码,只在屏幕上打印文件中首个音轨的语音识别纯文本。

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html

import dashscope
from urllib import request
import json

dashscope.api_key='your-dashscope-api-key'

task_response=dashscope.audio.asr.Transcription.async_call(
    model='paraformer-v1',
    file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav']
    )

transcription_response=dashscope.audio.asr.Transcription.wait(task_response.output.task_id)

transcription_url=transcription_response.output['results'][0]['transcription_url']
transcription_results=json.loads(request.urlopen(transcription_url).read().decode('utf8'))
print(transcription_results['transcripts'][0]['text'])
package com.alibaba.dashscope.sample.transcription;

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        TranscriptionParam param =
                TranscriptionParam.builder()
                        .apiKey("your-dashscope-api-key")
                        .model("paraformer-v1")
                        .fileUrls(Collections.singletonList("https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            TranscriptionResult result = transcription.asyncCall(param);
            result =
                    transcription.wait(
                            TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            List<TranscriptionTaskResult> taskResultList = result.getResults();
            if (taskResultList != null && taskResultList.size() > 0) {
                TranscriptionTaskResult taskResult = taskResultList.get(0);
                String transcriptionUrl = taskResult.getTranscriptionUrl();
                HttpURLConnection connection = (HttpURLConnection) new URL(transcriptionUrl).openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                Gson gson = new GsonBuilder().setPrettyPrinting().create();
                JsonObject jsonObject = gson.fromJson(reader, JsonObject.class);
                JsonArray jsonTranscripts = jsonObject.getAsJsonArray("transcripts");
                if (jsonTranscripts != null) {
                    for (int i = 0; i < jsonTranscripts.size(); i++) {
                        JsonObject jsonTranscript = jsonTranscripts.get(i).getAsJsonObject();
                        System.out.println(jsonTranscript.get("text").getAsString());
                    }
                }
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

很快,小明获得了对示例文件满意的显示结果。

Hello, world, 这里是阿里巴巴语音实验室。

将示例文件替换为真实任务

在调试好代码后,小明将示例文件替换为他希望进行语音识别的真实视频文件。首先通过修改 file 参数,小明将自己喜欢视频的URL指定给API。其次通过遍历 sentences 字段,将逐句的语音识别结果在屏幕上进行显示。

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html

import dashscope
from urllib import request
import json

dashscope.api_key='your-dashscope-api-key'

task_response=dashscope.audio.asr.Transcription.async_call(
    model='paraformer-v1',
    file_urls=['https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/2022_apsara_conference_keynote.mp4']
    )

transcription_response=dashscope.audio.asr.Transcription.wait(task_response.output.task_id)

transcription_url=transcription_response.output['results'][0]['transcription_url']
transcription_results=json.loads(request.urlopen(transcription_url).read().decode('utf8'))

for sentence in transcription_results['transcripts'][0]['sentences']:
        print(sentence['text'])
package com.alibaba.dashscope.sample.transcription;

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        TranscriptionParam param =
                TranscriptionParam.builder()
                        .apiKey("your-dashscope-api-key")
                        .model("paraformer-v1")
                        .fileUrls(Collections.singletonList("https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/2022_apsara_conference_keynote.mp4"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            TranscriptionResult result = transcription.asyncCall(param);
            result =
                    transcription.wait(
                            TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            List<TranscriptionTaskResult> taskResultList = result.getResults();
            if (taskResultList != null && taskResultList.size() > 0) {
                TranscriptionTaskResult taskResult = taskResultList.get(0);
                String transcriptionUrl = taskResult.getTranscriptionUrl();
                HttpURLConnection connection = (HttpURLConnection) new URL(transcriptionUrl).openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                Gson gson = new GsonBuilder().setPrettyPrinting().create();
                JsonObject jsonObject = gson.fromJson(reader, JsonObject.class);
                JsonArray jsonTranscripts = jsonObject.getAsJsonArray("transcripts");
                if (jsonTranscripts != null) {
                    for (int i = 0; i < jsonTranscripts.size(); i++) {
                        JsonObject jsonTranscript = jsonTranscripts.get(i).getAsJsonObject();
                        JsonArray jsonSentences = jsonTranscript.getAsJsonArray("sentences");
                        for (int j = 0; j < jsonSentences.size(); j++) {
                            JsonObject jsonSentence = jsonSentences.get(j).getAsJsonObject();
                            System.out.println(jsonSentence.get("text").getAsString());
                        }
                    }
                }
            }
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

等待一会儿后,小明获得了满意的文本内容。

呃,尊敬的刘书记,那个卢省长,各位领导,各位院士,各位合作伙伴,现场的和在线上的所有的伙伴们,大家好啊。
这个又站在这个舞台上又是一年的这个云栖大会,非常的激动。
这个今年是第14年了,确实这个这个云栖大会因阿里而生啊,在因阿里的云计算而生。
但到今天也是成为了一个中国这个产业界的盛会,成为我们这个数字时代。
我们大家讨论共同话题的一个场所啊,非常的开心。
尤其是刚才我们这个青晨讲的这个颁奖,也是阿里这个近五年来的我们的一个新举措。
我们也是希望啊通过这个实实代在的努力,能够啊这个结识更多的啊中国的这个青年科学家,在他们各自的赛道上能够助力他们去攀登科学的高峰。
啊,这个我想也是对阿里巴巴来讲。
就像今天我讲的主题一样,就是阿里巴巴的技术责任在哪里?
对阿里巴巴的技术责任来讲,还是首先是不仅是自身啊去追求我们技术的先进性。
同时也用阿里这样的一个平台,一个舞台能够更好的来助力我们这个更多的青年科学家,更多的面向未来的科学家们。
能够去追求这个科学的高峰,去追求他们的技术的先进性,科学的先进性。
所以这个是我们办这个奖的初心啊,我们也会一届一届的办下去。
也是希望我们有更多的啊青年科学家参与进来。
并且我们在过去五年当中结识的各位的伙伴们啊,能够在各自的赛道上能够有新的建树,能够为中国的科技的发展站在世界之巅。
啊,站在这个先进性的世界之巅,能够做出自己的贡献。
这个青春奖就是一个缩影啊,背后我刚才说了,也是阿里追求先进性的一个不断的一个努力的结果。
今天的整个的伴随着云这个云栖大会的召开,这14年阿里的这个云计算,包括阿里的这个数字生态也在不断的发展。
这也是整个中国啊全面的走向这个数字化的一个缩影。
啊,今天这个在前面这个包括我们张叶峰的主题这个演讲当中也分享了我们在整个的云计算方面,我们的阿里云的这个过去几年的努力。
特别是在今年啊,面向未来的发展,我们提出的观点啊,我们努力的方向。
这个确实今这十几年来,我们是一代又一代的我们的我们的阿里云的技术人,阿里巴巴的技术人们啊通过自己的努力实践。
希望能够在一个全新的赛道,就就是计算当在一个数字经济时代,当计算成一一个需要的一个基础设需需的一个社会的的基能力这样一个全新的赛道上。
能够站在世界之巅,同世界各国的所有的这个。
伙伴们同场竞技啊,来共同的发展。
刚才这个里边我们也这个分享了很多的过去的几年的主要的建树。
不不仅包括了我们对于整个云计算,从软件出发,从云操作系统出发,我们是中国啊这个唯一的这个云自主可控的操作系统啊。
这也是阿里云的缘起,也是我们云栖大会的缘起。
到今天啊,我们这这几年的努力,在重新定义这个围绕云计算,在同应重新定义内核定义硬件啊,这个包括在今天我们在走向如何能够让这个算力更好的跟数据去结合啊。
中间出现了算法出现了算法的普及性的应用。
这里边我们又在抽象出来一个非常重要的,我们希望能够推动的事情就是能够推动这个整个所有的算法模型的训练。
能够基于我们云的基础设施,在上面提供模型,即服务这样的训练。
啊,包括我们今天走向未来这个过程当中,如何在这个不仅是让专业的工作者能够享受到数据的成果,能够利用好数据的成果。
同时也能够让我们普通人啊,每个普通人都能够基于这个低代码的这样的一个环境开发环境能够进行更门槛、更低更普惠的这样一种开发享受数据这个知美共同来这个分享这个数据的成果。
创造数据的成果。
所以这个一系列的过程其实都是我们阿里巴巴在不断的去追求这个先进性的这样的一个表现。
当然在这个过程当中啊,最近啊大家聊的非常多的芯片啊,这样的话题在这一块也作为一个核心技术,核心的领域,我们也不能缺位啊。
所以这几年来我们的平头哥也是围绕着这样的我们的这样的云计算的场景去定义了我们倚天710。
的芯片。
并且今天在走向的广泛的啊大规模的使用啊,这些这个到了当然这些场景非常多。
就像今天的大图上大家也会看到这个在今年当中对阿里云还有一个非常重要的一个契机。
就是我们作为奥运会的合作伙伴,利用北京冬奥的机会,也首次让冬奥能够在云上举办。
啊,今天这个回顾这个今年1 2月份发生的事情。
其实奥运会的整个的奥运的管理系统。
票务系统赛事的运营系统,转播系统就都已经基于这个云来进行这个运作。
就像刚才我们各位嘉宾讲的,无论是在我们的这个海洋,在我们的这个在智能制造,在锂电池,在各行各业,在动漫。
其实每个行业都可以基于云产生完全全新的生产管理方式,经营管理方式。
所以这个是我们今天我们看到计算作为一个底座,能够来推动整个社会走向一个现代化,走向中国式现代化的一个非常重要的一个好的一个缺口。
在这个中间我们也非常关注的一点是,作为中国产生于中国的这个云计算公司。
我们如何能够站在世界的舞台上,与世界的其他的伙伴们同场竞技,先进性一定是在竞争当中获得的。
先进性是一定是在你追我赶当中获得的。
所以如何代表好中国?
屹立于世界,能够在整个全世界的云计算的这样的一个大舞台上,能够获得认可,获得新进性的表达。
这也是我们一直努力的目标。
我们也很高兴看到我们的从无论从到从us 到pass 的多项的技术能力啊,都已经走在了全球的领先的水平。
但是毫无疑问,这样的追求是是没有止境的,也是我们继续这个努力的方向。
随着云计算的这个发展啊,也给阿里这个追求技术先进性提供了一个全新的场景。
当然我们也在思考一个问题,就是先进的结果是为了什么?
先进的结果是为了能够为社会的美好,为社会的发展做出更大的贡献。
能够承担担当更大的一个社会责任。
所以如果说从阿里巴巴的技术责任来讲,技术的先进性是第一部分。
但是如何能够为社会的发展担当更大的责任,是我们非常重要的一个努力。
当然这个努力还是要从我们的云开始,从我们的云如何走向一朵可持支撑、可持续发展的云,支撑一朵绿色的云。
啊,在今天这个进这个会场之前。
啊,非常有意思。
今天当我们谈到云计算的时候,谈到我们数据的广泛的被采集,被分析、被使用、被挖掘,从而带动了各行各业的发展的时候。
我们不可否认一件事情,我们再好的数据中心,再好的云计算的能力,最终还是要用到更基础的能力,更基础的国家的资源。
啊,包括我们今天一直讲到底什么是基础设施。
毫无疑问,所有的云计算是建立在用电的基础上。
如何能够让我们的云计算支撑社会的可持续发展?
我想云计算这一个产业本身的发展。
首先我们应该有更高的起点,更高的要求,成为一朵更绿色的云。
啊,而而在这个过程当中,对阿里云自我要求来讲,作为呃全世界啊第一梯队,在亚太呃第一的这样的一个我们的云计算厂商。
我们如何能够站在更高的要求上去建设我们的云计算的产业显得非常重要。
啊,在这里边我们的努力啊在正在持续的发生啊,在在这个今年的早些时候,对阿里来讲,我们有一件重要的事情,就是公布了啊首份完整的这个阿里巴巴的ESG报告啊。
ESG作为阿里的这个社会责任的核心战略之一啊,其实在发挥着重要的作用。
在这份报告当中,我们不但提出了面向2030年对阿里巴巴集团来讲,我们是希望行。
啊,实现这个自身经营的整个碳中和以外,我们额外提出一个非常重要的理念。
就是我们希望构建一朵完整意义上绿色的云。
我们云计算的服务越来越广,云计算的受益者越来越多。
但是支撑这样服务,支撑这样的能力的资源的使用,必须是绿色的。
所以我们也很高兴的看到,在这里边我们也这个通过我们的努力也走在前列啊,我们在这个2021年的这个整个的绿电的使用当中。
是中国科技产业啊,利用绿电最多的行业啊呃最多的厂商。
同时我们在整个数据中心的能耗啊这样的一个消耗方面,我们也在这些指标都在突飞猛进的发展啊都在。
这个我们在不断的进步,但是如何能够让这个建设一朵更绿色的云服务社会。
我们看到它的重大的意义所在。
因为它的意义不仅是在做我们自身这朵云,而在于我们看到了这朵云的发展。
对于整个中国的社会的发展,中国现代化的发展带来了巨大的意义。
我刚才说了,我走进会场之前查了几个数字,我在这个我我这个也在这里有机会分享给大家。
这个数字是跟云计算有关系有密切关系。
但是它是一个用电量的数字,在2021年大家都知道整个球这个从全球呃全球来讲,从经济体的规模来讲,中国排位第二。
美国是23万亿美元的这个GDP,中国是17万呃,这个17万亿的美元。
而在用电量来讲,可能大家不完全可能不是每个人都知道啊,在这个中间完成这中国这17万亿的GDP。
中国国整个的用电量年度用电量是8.3万亿度电。
而美国是多少呢?
是3.8万亿度电。
更重要的是,在这个用电量的背后,美国的用电当中,居民用电的比重。
尽管中国的人口比他多得多,但是居民用电的比重,美国的比重远远高于中国,远远高于中国。
美国的比重到达达到40%左右,而中国居民用电的这个比重才15%左右。
那这个背后体现的是什么?
体现了我们大量的能源的消耗,大量的用电量。
进入到了产业的方方面面。
而今天我们看到建设一朵绿色的云的巨大的机会,不仅是来自于我们自身能够发展一个绿色的新的这个计算产业。
而在于说通过数字化能够使我们产业去匹配资源,使用、资源,配置资源的能力大大的加强。
大家都知道,因为数字化我们一个城市啊,我们的一个城市大脑,我们的一个城市的社会要素的数字化带来了不仅是可视性。
同时使得社会要素的配置效率可以被及时的观察和及时的调整和及时的进这个这个这个做进展。
在这个上面我们看到这不仅适用于像城市大脑这样的社会公共的大的环境的发展,也适用于刚才以我们几位嘉宾为例讲到的各行各业的垂直化产业的社会要素、生产要素、经营要素的配置。
这个中间对用电量的配置的,用电量到底耗用在哪些环节?
如何去进行收敛,如何进行发展,这也是基于云计算带来的一个。
非常重要的一个可能性,使得我们今天中国不仅在经济规模上能够成为世界第一。
同时,从能源消费从能源消耗,创造经济规模的效率上也能走向世界第一。
这里边我们阿里云也在自身追求一个云计算的绿色的过程当中,也在不断的去这个推出。
我们针对各行各业的核心应用。
其中我们有一个通用的应用,非常有意思。
我们推出了一个能耗宝这样的产品啊,我们是希望通过这样的一些产品,能够帮助各个企业能够观测它的能耗主要发生在哪些环节。
这些环节发生的实时的变化和如何进行调优。
而我们也看到,随着这样的这个绿色可持续的观念深入人心。
其实正在改变我们各行各业大家去追求绿色,追求可持续的方式。
而数字化毫无疑问给我们提供了一个非常非常重要的一个契机和一一种可能性。
所以追求自身的云更绿色,追求更多的客户。
因为数字化能够走向更绿色,是我们的共同的目标。
当然对阿里的这个技术责任来讲,追求绿色可持续是一个方面。
还有另外一个非常重要的方面,就是如何能够让我们的技术更普惠,更能够惠及普通人,更能够惠及普通企业。
啊,在这里我也给大家举一个例子,也是我们在去年的云栖大会首次发布的我们的无影电脑。
啊,这我们的云电脑,因为的云计算的产生啊,包括前面我们几位嘉宾,包括这个张建峰在演讲当中也讲到了,我们推出了这样一种创新的硬件设备。
它是形成一个云端一体的计算的联动啊,使得我们能够重新去看到一个非常细微的我们的一个尝试。
我们就把这件事情用在了我们在浙江。
啊,作为试点,先作作为一个先行区,我们在跟呃浙江的很多的山区县在合作,啊,正帮助他们作为走向共同富裕的这样的一个先行先试的一部分。
能够让我们这些山区的小学的这个IT机房。
因为云计算而不同啊,大家看到这个例子都能够感到,原来你是把云电脑布到了这些小学里面去。
那它带来一个什么好处?
它带来的好处显而易见的有几点。
第一点,整个硬件和软件的更新换代。
因为采采用了云电脑,因因为能够进行实时的云和端的交互,变得。
非常可视化,并且更新的门槛极度的降低。
第二,它带来的好处是布了这些机房有多少人在用。
有多少个账号在用,有多少台设备在发挥,怎么样的工作,在用哪些程序,其实清清楚楚。
所以在今天我也可以跟大家报告,在此时此刻我们的整个的这样的一个这个呃少年云助学的项目啊。
背后是把我们的云电脑无影的电脑走向了更多的山区的小学。
此时此刻我们有64所学校,有2800个云电脑的终端,有2万个账号。
这中间包括学校的学生,也包括老师在使用我们的服务啊,并且通过这个方法,我们也能够看到,也带来了很多的惊喜。
这里边有一个例子是我们的片片子当中有一个小朋友啊,这个这个小朋友是我们的这个小程序员。
叫张呃,江浩啊,他是十岁的年纪,但是因为有了这样的这个技术的普及的可能性,使他有机会发挥自己的聪明才智。
小小的年纪开发了一款游戏,能够让更多的人去使用啊,这只是一个小的例子。
这样的例子可以发生在这个他所在的这个小学,可以发生在浙江的。
我们正在合作的很多小学,但我相信也可以发发挥在更广的领域,能够因为云,因为技术啊能够让技术更普惠,让最先进的生产力更普惠。
我想这是我们追求生产力的先进性的这个这个发新啊,是这样。
在这个过程当中,我们也看到对阿里来讲,我们追求这样的一个普惠的这样的一个这个技术的这个贡献。
我们不仅要发挥技术的力量,发挥我们创新的这样的包括软硬件一体的结合的力量。
同时还要发挥阿里的一个重要的财富的力量。
就是我们阿里人的力量,阿里巴巴的同学们的力量,尤其是阿里的技术人的力量。
啊,今天在整个阿里巴巴集团,我们的技术人员的占比啊50%左右。
如何把这些力量发挥起来,让他们在技术走向普惠,让先进性的技术走向普惠上面发挥作用。
我们也做了很多的尝试。
所以今天这个我们有一个正在推进的一个阿里巴巴的一个program 啊,在我们技术团队在推广。
就是我们的阿里的乡村技术观的这样的一个项目啊,这个program 我们希望有更多的阿里的技术的同学能够以公益之心走出阿里的园区。
走向社会,走向乡村去帮助。
当地。
进行。
这个技术帮扶,因为技术帮扶能够使它的产业更可持续,使它能够享受到这个这个技术发展之美。
这里边举的一个例子就是这个。
跟。
造锂电池不同啊,其实造锂电池的这个这样的一个理念可以用在制造养殖。
种植方方面面啊,这里举了一个养猪的例子啊,如何能够让整个的阿里的这样的一个技术能够普惠更多的普通的农民,普通的种植户。
我们的乡村技术观当中,有一个项目是到了这个陕西的清涧啊,帮助那边利用数字技术,能够把养猪的过程能够数字化,能够让技术技术好。
每头猪都被数字化了,每头猪11年一天走几步路,也可以被数字化。
通过。
每每头猪一天吃了什么饲料,吃了多少饲料,也可以被数字化。
当这些结果产生以后,它很容易跟阿里巴巴的另外一边,我们的流通大市场,跟我们的盒马,跟我们的天猫去结合起来,实现一个真正产地到消费者不仅是一个销售通路的升级,也完成了一个供应链的升级。
也完成了一个养殖过程的升级。
我想这个是一些非常鲜活的小案例啊。
刚才我们这个前卫那位嘉宾给大家展示了很多的动画啊,我们这个追光,我那个杨戬这些电影,这个这个阿里来讲。
我们还是把最朴素的啊那些都带来了一文化之美美。
我们回到中国的黄土地,回到中国的普通通的农村。
我们阿里我们也可以用技术去挖掘他们的这个原生态之美。
另外在另外一个方面,其实也是通过走向广大的社会。
如何让技术跟中国传统的文化相结合?
刚才的动漫是一个例子,但是全国各地有多少。
文化的遗产。
有多少这样的这个作品是可以被数字化,通过数字化让更多的。
普通的学生让不更多普通的市民可以去分享到。
我想在这个中间,我们的乡村的技术。
呃,乡村技术管理项目也会在前期已经做的基础上,更多的去更多的去推进。
啊这样的一个工作。
所以在整个的这个发展当中,对阿里巴巴的技术先进性走向普惠。
啊,我们也是希望能够更多的和和通过阿里的力量,通过阿里这个我们的技术同学的力量,能够更好的跟社会去结合。
在这个中间整个的人才的跟社会人才的对接,生态和社会生态的这个对撞。
啊,我想是发挥了重要的一个作用。
那么。
在这样的一个技术,当我们讨论这些技术先进性和普惠性的时候,我们还是可以看到技术的外延是在不断的扩展。
啊,在方方面面都可以发生新的一个一个变化。
这个对阿里来讲,我们内部有一个非常重要的专业,就是设计。
啊,因为我们是一个互联网公司,我们有大量的面向消费者,面向产业合作伙伴的服务需要交付。
在这个交付当中设计的数字化是一个正在全方位发生的事情。
但是如何把我们设计人员的能力,把我们设计同学的能力。
把我们设计生态的能力跟社会相结合。
这也是我们阿里巴巴利用我们的人才走向技术普惠,是对呃这个践行我们的技术责任的非常重要的一种尝试。
啊,这个在我们的设计普惠当中,有一个我经常津津乐道的项目,叫寻找远方的美好啊。
在这样一个我们叫寻美。
在这样的一个项目当中,我们把它跟乡村振兴去结合起来,利用我们的设计的能力,问我们自身员工的是设计能力。
我们设计生态伙伴的能力,帮助乡村振兴当中,要希望把他的产品推向市场,把他的农产品,把他加工产品推向市场的这样的伙伴做一件事情。
就是帮他们设计一个好的包装物。
帮他们能够把他们的陕西的红苹果。
啊,早子这些走向市场的时候,能够有符合年轻人,符合消费者需要的这样的一种呈现。
啊,这些是我们在这样的点点滴滴当中找到了一个用技术先进性,用流通大市场作为整载,又发挥我们阿里的同学的特点的这样的一个方式。
所以在这样的方式下,今天我们已经很高兴,已经设计了170多款的产品啊,设计的这170多款的产品。
我们设计了不同的包装,我们有超过1000啊1 1500名的同学参与到我们这样的一个设计平台的这个这个公益平台的这样的一个工作当中啊。
最终我们是希望能够真正把设计的数字化,把设计的创造性和我们的乡村振兴和社会的方方面面啊去结合起来。
能够真正来推动啊这些发展。
当然我们在这个领域还做了很多别的工作,包括我们做了。
这个围绕着170多种文字啊,做了这个阿里巴巴的普惠体。
这个普惠体的核心是让更多的中小企业,更多的社会公众在需要的时候能够用到一个价廉物美。
同时是普适性的,能够适应用户场景的数字化的这样的一个字体。
这个这些努力都是我们实实在在的在一点一滴去做的努力。
但是最终我还想说的是,围绕着这样的一个这个社会责任的一个探索,围绕着普惠的探索,围绕着绿色可持续的探索,离不开第一,离不开我们所有的合作伙伴的共同努力。
同时也离不开我们对技术的不断追求。
我想只有我们把技术做得更先进,把我们的云计算,把我们的算力,把数据结合的更好,我们才能够真正的为社会在发展当中。
在先进性和实现社会责任感当中找到最佳的碰撞点,也能够因让世界,因计算之美,让世界因数据之美而变得更加美好。
谢谢大家。

进阶指南

使用实时语音识别模型开发实时语音转文字上屏功能

小明在成功调用语音识别的视频文件转写功能后,又想使用麦克风进行流式语音识别并进行文字上屏,达到“边说话边以打字机的形式显示文字”的效果。于是他通过调用实时Paraformer模型API(以下示例以paraformer-realtime-v1模型为例),通过在回调函数中编写自己的上屏显示代码,实现了一个实时语音输入法的功能。

说明
  • 需要使用您的api-key替换示例中的 <your-dashscope-api-key>,代码才能正常运行。

  • 示例代码需要安装如下开发组件

    • 通过pip install pyaudio命令安装第三方音频播放与采集模块

    • 通过pip install colorama命令安装跨平台终端显示模块

  • 在windows或者mac的终端(Terminal)当中执行,可实现“一边说话一边文字同步显示上屏”的效果。建议将终端窗口设置为“最大”从而获得较好的字符上屏体验。

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html

import colorama
import pyaudio
import dashscope
from dashscope.audio.asr import (Recognition, RecognitionCallback,
                                 RecognitionResult)

dashscope.api_key='<your-dashscope-api-key>'

colorama.init()

mic = None
stream = None
latest_sentence: str = ''
display_text: str = ''
max_chars: int = 40
clear_flag: bool = False

class Callback(RecognitionCallback):
    def on_open(self) -> None:
        global mic
        global stream
        mic = pyaudio.PyAudio()
        stream = mic.open(format=pyaudio.paInt16,
                          channels=1,
                          rate=16000,
                          input=True)

    def on_close(self) -> None:
        global mic
        global stream
        stream.stop_stream()
        stream.close()
        mic.terminate()
        stream = None
        mic = None

    def on_event(self, result: RecognitionResult) -> None:
        global latest_sentence
        global display_text
        global max_chars
        global clear_flag
        sentence = result.get_sentence()
        is_end = result.is_sentence_end(sentence)

        if len(display_text) > 0 or clear_flag:
            # clear the current row
            print('\033[1A\033[K', end='')
            if clear_flag:
                clear_flag = False
                display_text = ''
                latest_sentence = ''

        display_text = latest_sentence + sentence['text']
        if is_end:
            latest_sentence = display_text
            if len(display_text) > max_chars:
                clear_flag = True

        print(display_text)

callback = Callback()
recognition = Recognition(model='paraformer-realtime-v1',
                          format='pcm',
                          sample_rate=16000,
                          callback=callback)
recognition.start()

while True:
    if stream:
        data = stream.read(3200, exception_on_overflow = False)
        recognition.send_audio_frame(data)
    else:
        break

recognition.stop()

小明在终端当中运行相应的程序代码,便可以实现使用麦克风进行实时语音识别,并在屏幕上显示文字的功能。

了解更多

有关Paraformer语音识别模型服务的详细调用文档可前往录音文件识别API详情实时语音识别API详情页面进行了解。

  • 本页导读 (0)
文档反馈