【教程】本地Docker部署whisper并接入one-api

准备:

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中就可以使用了:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°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
Source: github.com/zhheo/Sticker-Heo
颜文字
Emoji
小恐龙
花!
每日手帐
呼呼
Heo
上一篇
下一篇