网站开发最好的语言,厦门住建局,营销网站和展示型网站,合肥网站建设网站推广ipex-llm环境配置及模型下载 由于需要处理音频文件#xff0c;还需要安装用于音频分析的 librosa 软件包。
pip install librosa下载音频文件
!wget -O audio_en.mp3 https://datasets-server.huggingface.co/assets/common_voice/--/en/train/5/audio/audio.mp3
!wget -O a…ipex-llm环境配置及模型下载 由于需要处理音频文件还需要安装用于音频分析的 librosa 软件包。
pip install librosa下载音频文件
!wget -O audio_en.mp3 https://datasets-server.huggingface.co/assets/common_voice/--/en/train/5/audio/audio.mp3
!wget -O audio_zh.mp3 https://datasets-server.huggingface.co/assets/common_voice/--/zh-CN/train/2/audio/audio.mp3播放下载完成的音频
import IPythonIPython.display.display(IPython.display.Audio(audio_en.mp3))
IPython.display.display(IPython.display.Audio(audio_zh.mp3))1、加载预训练好的 Whisper 模型
加载一个经过预训练的 Whisper 模型例如 whisper-medium 。OpenAI 发布了各种尺寸的预训练 Whisper 模型包括 whisper-small、whisper-tiny 等您可以选择最符合您要求的模型。 只需在 ipex-llm 中使用单行 transformers-style API即可加载具有 INT4 优化功能的 whisper-medium通过指定 load_in_4bitTrue如下所示。请注意对于 Whisper我们使用了 AutoModelForSpeechSeq2Seq 类。
from ipex_llm.transformers import AutoModelForSpeechSeq2Seqmodel AutoModelForSpeechSeq2Seq.from_pretrained(pretrained_model_name_or_pathopenai/whisper-medium,load_in_4bitTrue,trust_remote_codeTrue)2、加载 Whisper Processor
无论是音频预处理还是将模型输出从标记转换为文本的后处理我们都需要 Whisper Processor。您只需使用官方的 transformers API 加载 WhisperProcessor 即可
from transformers import WhisperProcessorprocessor WhisperProcessor.from_pretrained(pretrained_model_name_or_pathopenai/whisper-medium)3、转录英文音频
使用带有 INT4 优化功能的 IPEX-LLM 优化 Whisper 模型并加载 Whisper Processor 后就可以开始通过模型推理转录音频了。 让我们从英语音频文件 audio_en.mp3 开始。在将其输入 Whisper Processor 之前我们需要从原始语音波形中提取序列数据
import librosadata_en, sample_rate_en librosa.load(audio_en.mp3, sr16000)对于 whisper-medium其 WhisperFeatureExtractorWhisperProcessor 的一部分默认使用 16,000Hz 采样率从音频中提取特征。关键的是要用模型的 WhisperFeatureExtractor 以采样率加载音频文件以便精确识别。 然后我们就可以根据序列数据转录音频文件使用的方法与使用官方的 transformers API 完全相同
import torch
import time# 定义任务类型
forced_decoder_ids processor.get_decoder_prompt_ids(languageenglish, tasktranscribe)with torch.inference_mode():# 为 Whisper 模型提取输入特征input_features processor(data_en, sampling_ratesample_rate_en, return_tensorspt).input_features# 为转录预测 token idst time.time()predicted_ids model.generate(input_features, forced_decoder_idsforced_decoder_ids)end time.time()# 将 token id 解码为文本transcribe_str processor.batch_decode(predicted_ids, skip_special_tokensTrue)print(fInference time: {end-st} s)print(-*20, English Transcription, -*20)print(transcribe_str)forced_decoder_ids 为不同语言和任务转录或翻译定义上下文 token 。如果设置为 NoneWhisper 将自动预测它们。 4、转录中文音频并翻译成英文
现在把目光转向中文音频 audio_zh.mp3。Whisper 可以转录多语言音频并将其翻译成英文。这里唯一的区别是通过 forced_decoder_ids 来定义特定的上下文 token
# 提取序列数据
data_zh, sample_rate_zh librosa.load(audio_zh.mp3, sr16000)# 定义中文转录任务
forced_decoder_ids processor.get_decoder_prompt_ids(languagechinese, tasktranscribe)with torch.inference_mode():input_features processor(data_zh, sampling_ratesample_rate_zh, return_tensorspt).input_featuresst time.time()predicted_ids model.generate(input_features, forced_decoder_idsforced_decoder_ids)end time.time()transcribe_str processor.batch_decode(predicted_ids, skip_special_tokensTrue)print(fInference time: {end-st} s)print(-*20, Chinese Transcription, -*20)print(transcribe_str)# 定义中文转录以及翻译任务
forced_decoder_ids processor.get_decoder_prompt_ids(languagechinese, tasktranslate)with torch.inference_mode():input_features processor(data_zh, sampling_ratesample_rate_zh, return_tensorspt).input_featuresst time.time()predicted_ids model.generate(input_features, forced_decoder_idsforced_decoder_ids)end time.time()translate_str processor.batch_decode(predicted_ids, skip_special_tokensTrue)print(fInference time: {end-st} s)print(-*20, Chinese to English Translation, -*20)print(translate_str)