【教程】本地Docker部署whisper并接入one-api
本文最后更新于 80 天前,其中的信息可能已经有所发展或是发生改变。

准备:

1、可以运行Docker的主机
2、良好的网络
3、会一点代码或会使用AI写代码

创建一个whisper文件夹,文件夹内创建一个docker-compose.yml文件,写入以下信息:

version: '3.8' # 使用适合您Docker Compose版本的yaml格式版本

services:
  whisper_asr_service:
    image: onerahmet/openai-whisper-asr-webservice:latest
    container_name: whisper_asr_container # 可选,用于自定义容器名称
    ports:
      - 9000:9000 #访问端口
    volumes:
      - ./whiper:/root/.cache/whisper # 模型缓存目录挂载
    environment:
      - ASR_MODEL=medium

可选模型

在目录中运行docker-compose up -d下载镜像和创建容器。

成功启动容器后,访问http://IP:9000/docs查看接口文档:

/asr是语音转文字接口,/det…age是判断语言类型接口。一般使用/asr即可,可以直接在网页上进行测试:

如图上所示,我将我说的”随便说一句话“文件传上后即解析出对应文字。
但是OpenAI的接口不是这样的:

因此无法直接接到One-Api上,需要用软件转一下,这里用宝塔搭建的,就用PHP写,用的Laravel框架:

创建AudioTranscriptionController控制器

php artisan make:controller /API/AudioTranscriptionController
<?php

namespace App\Http\Controllers\API;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

class AudioTranscriptionController extends Controller
{
    //
    public function transcribe(Request $request)
    {
        // 验证授权头信息(如果需要的话)
        if (!$request->bearerToken() || $request->bearerToken() !== env('OPENAI_API_KEY', 'sk-fastgpt')) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        // return response()->json(['text' => '测试']);

        // 获取上传的音频文件
        $file = $request->file('file');

        if (!$file) {
            return response()->json(['error' => 'Missing audio file'], 422);
        }

        // 构建转发请求的参数
        $response = Http::attach(
            'audio_file', file_get_contents($file), $file->getClientOriginalName(), ['Content-Type' => 'audio']
        )->post('http://IP:9000/asr', [
            'encode' => true,
            'task' => 'transcribe',
            'word_timestamps' => false,
            'output' => 'txt',
        ]);

        // 处理ASR服务返回的结果
        $transcriptionText = $response->body();

        // 将文本转换为JSON格式响应
        return response()->json(['text' => $transcriptionText]);
    }
}

route/api.php中添加以下代码:

use App\Http\Controllers\API\AudioTranscriptionController;
// ...
Route::post('/v1/audio/transcriptions', [AudioTranscriptionController::class, 'transcribe']);

.env文件中添加OPENAI_API_KEY变量:

OPENAI_API_KEY=sk-fastgpt

然后http://LaravelIP/api/v1/audio/transcriptions就做好和OpenAI一样的转换接口了。
同样可以测试一下看看:

最后接入到One-Api中就可以使用了:

Python版本

from flask import Flask, request, jsonify
import os
import requests

app = Flask(__name__)

@app.route('/v1/audio/transcriptions', methods=['POST'])
def transcribe():
    # 验证授权头信息(如果需要的话)
    # api_key = os.getenv('OPENAI_API_KEY')
    # auth_header = request.headers.get('Authorization')
    # if not auth_header or f'Bearer {api_key}' != auth_header:
    #     return jsonify({'error': 'Unauthorized'}), 401

    # 获取上传的音频文件
    file = request.files.get('file')
    if not file:
        return jsonify({'error': 'Missing audio file'}), 422

    # 构建转发请求的参数
    files = {'audio_file': (file.filename, file.stream, 'audio')}
    data = {
        'encode': True,
        'task': 'transcribe',
        'word_timestamps': False,
        'output': 'txt',
    }

    # 发送POST请求到ASR服务
    response = requests.post('http://192.168.0.128:9000/asr', files=files, data=data)

    # 处理ASR服务返回的结果
    transcription_text = response.text

    # 将文本转换为JSON格式响应
    return jsonify({'text': transcription_text})

if __name__ == '__main__':
    # 指定IP地址和端口
    app.run(host='0.0.0.0', port=9001, debug=True)

需要先pip install flask和requests

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
Source: https://github.com/MengXi2021/Argon-Emoji-DailyNotes
Source: https://github.com/Ghost-chu/argon-huhu-emotions
https://github.com/qs5667/argon_bilibili_emoji
https://github.com/qs5667/argon_bilibili_emoji
https://github.com/qs5667/argon_bilibili_emoji
https://github.com/qs5667/argon_bilibili_emoji
Source: github.com/zhheo/Sticker-Heo
颜文字
Emoji
小恐龙
花!
每日手帐
呼呼
B站基础表情
B站节日表情
B站游戏表情
B站活动表情
Heo
上一篇
下一篇