LM Studio-本地安装大模型 | OpenAI API 文字转语音本地运行程序分享
ztj100 2025-05-25 16:49 74 浏览 0 评论
之前我写过实测在Mac上使用Ollama与AI对话的过程 - 模型选择、安装、集成使用记,从Mixtral8x7b到Yi-34B-Chat,最近用上了LM Studio,对比Ollama,LM Studio还支持Win端,支持的模型更多,客户端本身就可以多轮对话,而且还支持启动类似OpenAI的API的本地HTTP服务器。
https://lmstudio.ai/
我推荐dolphin-2.6-mistral 7B和dolphin-2.7-mixtral-8x7b模型。
下载后选择模型,设置参数,再重新加载模型。
实测,dolphin-2.6-mistral 7B模型在我Mac M1 Max 32G的电脑上运行速度很快,生成质量不错,而且dolphin是可以生成NSFW内容的。
LM Studio的特色功能
我最喜欢LM Studio的功能是支持启动类似OpenAI API的本地HTTP服务器。
也就是说,如果你之前做过一些应用,用的是OpenAI API的模型,那现在可以非常方便转成本地模型。
从OpenAI API到本地模型:平滑过渡
这里的示例代码非常好用,稍微修改下,既可做本地模型使用,而且也可以写OpenAI的套壳应用。
本地模型chat-python
# Example: reuse your existing OpenAI setup
from openai import OpenAI
# Point to the local server
client = OpenAI(base_url="http://localhost:1234/v1", api_key="not-needed")
completion = client.chat.completions.create(
model="local-model", # this field is currently unused
messages=[
{"role": "system", "content": "Always answer in rhymes."},
{"role": "user", "content": "how to be happy."}
],
temperature=0.7,
)
print(completion.choices[0].message.content)
OpenAI-chat-python
from openai import OpenAI
import os
client = OpenAI(base_url="https://gateway.ai.cloudflare.com/v1/ACCOUNT_TAG/GATEWAY/openai/", api_key=os.getenv('OPENAI_API_KEY'))
completion = client.chat.completions.create(
model="gpt-3.5-turbo-1106",
messages=[
{"role": "system", "content": "Always answer in rhymes."},
{"role": "user", "content": "write a song."}
],
temperature=0.7,
)
print(completion.choices[0].message.content)
Tips:
1. 将你的 OPENAI API 密钥导出为环境变量。
export OPENAI_API_KEY=YOUR_OPENAI_API_KEY
2. 这里用到Cloudflare的AI Gateway,方便链接到OpenAI API。
新建网关(下图我已创建了一个),点击openapi-proxy API Endpoints,可以看到ACCOUNT_TAG。
更多OpenAI · Cloudflare AI Gateway docs请看这里:
https://developers.cloudflare.com/ai-gateway/providers/openai
当通过Cloudflare AI Gateway运行后,可以在实时日志里查看每一次调用状态。
利用OpenAI API进行文字转语音
我是在使用LM Studio之前找OpenAI API官方文档,编写了几个本地运行的Python代码,最终做了一个本地的程序。
它帮我解决了一个问题:使用OpenAI API的文字转语音服务,生成视频配音。
这里需要注意下,GPT4里关于OpenAI API的知识不是最新的,需要在OpenAI官方文档里检索。
https://platform.openai.com/docs/api-reference
https://github.com/openai
下图的信息是过时的。
TTS的价格
声音类型
我编写的程序支持选声音、是否合并段落来生成语音。
界面设计:Tldraw与Gradio的应用
我是用Tldraw帮我做的界面,教程请见tldraw make real:利用AI一键从原型图到生成真实可用的代码。
生成的UI代码最后又让GPT4修改了一下。
我还试了不用html,而用Gradio来做UI。
Gradio是一个开源的Python库,它允许用户为机器学习模型构建用户界面,并将其部署在几行代码中。Gradio的主要优势在于其易用性,只需简单定义输入和输出接口,就可以快速构建简单的交互页面,并轻松部署模型。
这个界面大家应该很熟悉,很多大模型的demo用的是这种界面。
由于刚接触Gradio不久,为避免GPT4出现上文OpenAI文档过时的情况,我做了个“Gradio文档助手”GPT来帮我写Gradio代码。
https://www.gradio.app/docs/
我是通过gpt-crawler来获取Gradio文档的。
https://github.com/BuilderIO/gpt-crawler
如它的官网展示,修改的参数很少,很方便就能将文档下载下来。
文本转语音实践:Python代码分享
这里分享直接可以运行的text to speech python代码:
from openai import OpenAI
import os
import datetime
client = OpenAI(base_url="https://gateway.ai.cloudflare.com/v1/ACCOUNT_TAG/GATEWAY/openai/", api_key=os.getenv('OPENAI_API_KEY'))
# 指定的文本文件路径和语音文件保存路径
input_file_path = 'text2speech-input.txt'
current_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
# 读取输入文件并生成语音
with open(input_file_path, 'r') as file:
lines = file.readlines()
for i, line in enumerate(lines):
input_text = line.strip()
speech_file_path = f'/Users/yourmac/Downloads/{current_time}_{i+1}.mp3'
response = client.audio.speech.create(
model="tts-1",
voice="onyx",
input=input_text
)
# 保存语音文件
response.stream_to_file(speech_file_path)
print(f"Speech {i+1} saved to {speech_file_path}")
同目录下新建文件text2speech-input.txt,将要转录的文字放在文档里。
我还编写了根据AI绘图提示词批量生成图片的程序,只是DALLE3的API费用太贵,小试一下。
本地模型与OpenAI模型的结合
回到开头介绍的LM Studio,本地大模型可以完成许多有趣的任务,而不需要调用开销更高的API。例如,本地模型可以生成创意的绘画提示词和主题,以帮助艺术家获得灵感。它们也可以用来写出引人入胜的故事大纲。
除了独立完成这些创作任务外,本地模型还可以与OPENAI等API结合,发挥各自的优势。比如,本地模型可以先生成初始素材,再由OPENAI模型进行细化和提升。这样既节省了调用API的成本,又能发挥大模型的强大能力。探索本地模型和API的最佳组合,能帮助我们在成本和效果之间找到最好的平衡点。
相关推荐
- Python 操作excel的坑__真实的行和列
-
大佬给的建议__如何快速处理excelopenpyxl库操作excel的时候,单个表的数据量大一些处理速度还能接受,如果涉及多个表甚至多个excel文件的时候速度会很慢,还是建议用pandas来处理,...
- Python os.path模块使用指南:轻松处理文件路径
-
前言在Python编程中,文件和目录的操作是非常重要的一部分。为了方便用户进行文件和目录的操作,Python标准库提供了os模块。其中,os.path子模块提供了一些处理文件路径的函数和方法。本文主要...
- Python常用内置模块介绍——文件与系统操作详解
-
Python提供了多个强大的内置模块用于文件和系统操作,下面我将详细介绍最常用的几个模块及其核心功能。1.os模块-操作系统交互...
- Python Flask 建站框架实操教程(flask框架网页)
-
下面我将带您从零开始构建一个完整的Flask网站,包含用户认证、数据库操作和前端模板等核心功能。##第一部分:基础项目搭建###1.创建项目环境```bash...
- 为你的python程序上锁:软件序列号生成器
-
序列号很多同学可能开发了非常多的程序了,并且进行了...
- PO设计模式全攻略,在 UI 自动化中的实践总结(以企业微信为例)
-
一、什么是PO设计模式?PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个Page类,即一个py文件,并以页面为单位来写测试用例,实现页面对象和测试用例的...
- 这种小工具居然也能在某鱼卖钱?我用Python一天能写...
-
前两天在某鱼闲逛,本来想找个二手机械键盘,结果刷着刷着突然看到有人在卖——Word批量转PDF小工具...
- python打包成exe,程序有图标,但是任务栏和窗口都没有显示图标
-
代码中指定图标信息#设置应用ID,确保任务栏图标正确显示ifsys.platform=="win32":importctypesapp_id=...
- 使用Python构建电影推荐系统(用python做推荐系统)
-
在日常数据挖掘工作中,除了会涉及到使用Python处理分类或预测任务,有时候还会涉及推荐系统相关任务。...
- python爬取并分析淘宝商品信息(python爬取淘宝商品数据)
-
python爬取并分析淘宝商品信息背景介绍一、模拟登陆二、爬取商品信息1.定义相关参数2.分析并定义正则3.数据爬取三、简单数据分析1.导入库2.中文显示3.读取数据4.分析价格分布5.分析销售...
- OpenCV入门学习基础教程(从小白变大神)
-
Opencv是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等,下面这篇文章主要给大家介绍了关于openCV入门学习基础教程的相关资料,需要的朋友可以...
- python图像处理-一行代码实现灰度图抠图
-
抠图是ps的最基本技能,利用python可以实现用一行代码实现灰度图抠图。基础算法是...
- 从头开始学python:如何用Matplotlib绘图表
-
Matplotlib是一个用于绘制图表的库。如果你有用过python处理数据,那Matplotlib可以更直观的帮你把数据展示出来。直接上代码看例子:importmatplotlib.pyplot...
- Python爬取爱奇艺腾讯视频 250,000 条数据分析为什么李诞不值得了
-
在《Python爬取爱奇艺52432条数据分析谁才是《奇葩说》的焦点人物?》这篇文章中,我们从爱奇艺爬取了5万多条评论数据,并对一些关键数据进行了分析,由此总结出了一些明面上看不到的数据,并...
- Python Matplotlib 库使用基本指南
-
简介Matplotlib是一个广泛使用的Python数据可视化库,它可以创建各种类型的图表、图形和可视化效果。无论是简单的折线图还是复杂的热力图,Matplotlib提供了丰富的功能来满足我们...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Python 操作excel的坑__真实的行和列
- Python os.path模块使用指南:轻松处理文件路径
- Python常用内置模块介绍——文件与系统操作详解
- Python Flask 建站框架实操教程(flask框架网页)
- 为你的python程序上锁:软件序列号生成器
- PO设计模式全攻略,在 UI 自动化中的实践总结(以企业微信为例)
- 这种小工具居然也能在某鱼卖钱?我用Python一天能写...
- python打包成exe,程序有图标,但是任务栏和窗口都没有显示图标
- 使用Python构建电影推荐系统(用python做推荐系统)
- python爬取并分析淘宝商品信息(python爬取淘宝商品数据)
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)